协议型外挂制作四
By rix
上一次我们说了外挂中APIHOOK和基本平台的搭建,但仅仅只用APIHOOK在大多数的时候并不能达到目的,没有哪个公司会将网络打包加密解密解包的程序放在dll中以函数的形式就可以查看。所以这节来讲解为目标程序打内存补丁来修改程序的执行路径,通过这种办法让目标程序成为我们的奴隶。
前两天由于项目的关系,耽搁了两天教程,对不起大家。今天写教程时才发现,我当时研究程序文件用的是ida 4.17的版本,前段时间刚刚换成了4.7版本。虽然现在的版本比以前更好用,但版本的不兼容却让我头痛,最后没办法又找了个4.17的版本来用。这节中还需要使用的另外一个工具是W32dasm,W32dasm的快捷和为程序打补丁的方便是我最喜欢他的原因,ida 4.7是否支持和W32dasm那样的功能我还不知道,毕竟我刚刚装上,还没怎么用过呢。
废话就不说了,为程序打内存补丁和做游戏修改器差的不太多,只是游戏修改器修改的是数据,而内存补丁修改的是指令,在做之前,请一定要做好祈祷,虽然我会尽可能的将我所知道的注意点说出来,但仍然不敢保证你是否会出现非法指令、内存越界等等,如果出现蓝屏一定要买彩票阿,反正我是没有遇到过。
关于如何做内存补丁,在看雪出的那本《加密与解密》上有详细的讨论,这里简单说一下注意点:
1、 尽可能的调用程序本身的函数,除非没有办法再自己加载函数。
2、 在调用函数之前,一定要将相关函数的寄存器内容保存,在调用结束后,要将其内容恢复。
3、 注意堆栈平衡。
4、 由于我们要给源程序添加代码,因此尽可能的找一块空余的不会被修改内存(内存页4K