闲来想学学外挂制作技术,曾经一度想过制作外挂,但总觉得会很难,又要分析协议,还要懂得加密解密算法,还要能反编译看懂汇编,一次次给自己吓倒了。
这些天终于决定尝试着做做看,才发现——根本没有自己想象的困难,当然也有可能是因为随着时间的流逝水平早已比当年进步了许多。
第一次制作外挂,选的游戏是WOW,主要是因为自己比较喜欢玩而已……,逻辑方面自己会更熟悉,而且WOW还有开源的服务器工程可以参考(当然也不完全靠得住,后来我就发现一些WOW客户端和antrix相冲突的地方)。
具体服务器构架,消息协议等都能从antrix源码中找到答案,但是在很多时候仍然需要自己去反编译客户端。我谈谈自己这些天反编译的心得。
首先,借用一句话——“源码面前,了无秘密”,其实一样,在机器码面前也是了无秘密的,只不过这是理论上的……。但毕竟只要有足够的耐心,和专业的知识,一样可以窥探到EXE里的每一个细节。
一开始反汇编的时候你可能会觉得了无头绪,面对天书一样浩如烟海的汇编代码,你可能直接就缴械投降了……,但其实只要抓住一条主线就是——你想从EXE里找寻什么,线索就会自然地铺开。我们希望找到EXE中逻辑操作(跑,跳,交易,战斗)和网络消息之间的对应关系,进而制作一个简单的实现游戏逻辑的程序或者一个有一定智能客户端(如打钱外挂)。这样当你有方向的时候,就知道该如何着手了,最常用的方法就是在RECV和SEND处设置断点,观察堆栈(点非常背的时候你可能会观察到错误的堆栈,就是那种启用了栈帧优化的程序,这是反编译程序不知道每个函数