呵呵 这个说的是方法,就不拿哪个游戏来举例了,懂得原理,操作自己灵活变动。
首先说的,网络游戏是有客户端 服务器的,这样就得需要一个通讯,基本上的功能都会通过服务器来验证的,要是本地验证的话那就能很快做出BT功能了。所以为了防止BT功能,就会用服务器来控制。
那么,现在知道了一个关键的地方了,也就是通讯,就是联网,就是发包了。那么发包就得send【或者WSASend】了。至于哪个是不重要的。因为他们的原理是一样的,而我下面将要说的是原理上的寻找,不是告诉你说具体找哪个的,因为在我看来,找哪个都是一样的。
要是你想懂得以下我说的意思,可能需要了解的有:OD的基本使用方法;《Wingdows核心编程》;还得懂得汇编;还要掌握一种编程语言及在此编程语言里面嵌入汇编【要是你把汇编转换成你的编程语言来写且实现跟汇编一样的功能的话也不反对】等。
一:
开一个游戏,进入后,开OD【有的游戏可能会检测OD,也许需要你先开OD,然后通过一些插件来实现隐藏或者过掉游戏检测】,附加游戏进程,这个是必须的,虽然基本上人会搞游戏的都懂这个。
二:
然后按OD上面的那个字母按钮 “E” ,选择游戏进程,进入到游戏领空,然后在游戏领空里面你看到的第一个call,进到这个call里面,再看这里面的第一个call,进去,按照 这样的方法一直到 kernel32.dll 或者 ntdll.dll 里面的第一个call ,下断【可以双击此行的Hex dump 的值或者再选中此行的时候按F2】,然后回到游戏里面,随便使用一个你认为能让游戏发包的功能。
【或者你直接找OD里面的函数。可通过Ctrl + N 来显示此时游戏的函数,这个时候应该能看到Send 或者 WSASend ,要是看不到你就按照上面的步骤来操作吧,不过这个找到的发包函数不一定对,但是按照上面操作找的话肯定对】
三:
如果上面的操作你都搞定了,那应该此时OD里面就断下来一个地方,你就翻上几层就可看到游戏的发包函数了。
四:
找到发包函数之后,你如果直接断这个发包call的话,应该会一直断的,或者断的很快。会一直这样。然后你看OD的寄存器的值,主要是看这个发包的包长 【要是不懂的话,就看寄存器哪个值是有固定的几个来回出现的就行】,然后选中你断的那行,按 Shift + F2 【或者你找OD的调试(中文版),Debug(英文版)的条件断点】,在弹出的框框里面填入你看的那个寄存器的值,比如:eax != 0x2 && eax != 0xc && eax != 0x6【这个条件视实际情况而定】。然后就可以通过这个发包call来这你想要的功能call了【不过这个只能找到那些发包的功能call,要是不发包的 话,可以看下我的相关帖子,应该可以看到相关的方法】。
五:
在找到了发包call之后,可能你想找到明文发包call,那样的话,也是通过这个call来向上找的,就看你想要什么call了,基本上99%都可以找到。
综上所述,应该就可以实现一个比较万能的方法了,要是由于本人的表达能力有限,导致各位读者看不懂的话,还请见谅。要是想要弄清楚或者交流的话,可以到我们专门为了交流call而准备的群:辅助技术支持群 88823117 .
最后再次重申,由于本人才疏学浅,表达能力有限,以上发的烂文各位看不懂的话还请飘过,或者有什么疑问可以回帖发问,混沌尽量都能回复。