上分宝:值得大家信赖的下载网站!
时间:2023-12-21 15:51:39来源:互联网
外挂的本质其实就是找到进程中的某个变量或者某行代码的内存地址,然后进行修改,完成其想要完成的功能。这是最基本的要求,当然如果想要深入去学习制作外挂的话,还有很多东西很多内容,首先,你要懂得汇编,其次如果是制作Windows平台上的外挂的话,要深入了解PE文件格式,Windows内核等相关知识,再次如果应用程序中的代码或者变量是加密的话,或者是加壳的话,你要深入学习解密和脱壳方面的知识,最后应用程序如果是加了检测的话,还要懂得如何过检测。今天,我们通过实现在植物大战僵尸中秒杀僵尸的这样一个小小的例子,去学习一下如何找到某内存地址然后修改该内存地址中的内容,完成秒杀僵尸的功能。
我们先要盲猜一下植物大战僵尸游戏设计者的思路:植物打一下僵尸,僵尸是会减少血量的,当血量减少到0的时候,僵尸就挂掉。
因此,关键找到植物打一下僵尸然后所执行的扣除血量的指令,我们可以先找到某一只僵尸的血量值所在的内存地址,然后让植物打一下僵尸,接着看一下是进程中哪一条指令修改了这个内存地址,而这一行指令很有可能是植物打一下僵尸,然后执行的扣掉僵尸血量的指令。
1.找到某个僵尸血量值的内存地址
打开CE工具,附加一下植物大战僵尸的进程,然后等某一只僵尸出现时,使用CE工具首次扫描一下,扫描类型选择未知的初始数值。
然后种下一棵植物,让这个植物打僵尸,打一次,我们就在原先的扫描基础上,把扫描类型换成减少的数值,然后点击再次扫描。一直打一直扫,扫到差不多,看一下比较像血量值的。
发现这个数值有点像,上次的数值是植物还没打到的数值,为130,然后植物打了一下,这个数值变成110了,扣了20点血量,因此,我们尝试着把这个值当成这个僵尸的血量值,其内存地址为0x29C10840。
2.找到扣僵尸血量的指令
我们再让植物打一下僵尸,然后查看一下修改该内存地址(0x29C10840)的指令代码,我们找到了,是这一条指令修改了该内存地址的值,很明显,[edi 000000C8]是该只僵尸的血量内存地址值,ebp是即将需要赋的值。
我们再看仔细一点,发现ebp首先会减掉一个值(内存地址为0x0054D0BA的指令sub ebp,[esp 20]),然后再把相减的结果赋值给僵尸血量(mov [edi 000000C8],ebp),那我们是不是可以在相减的这一行代码做一下手脚呢?当然可以,直接让其相减的结果为0,就能做到直接秒杀僵尸了。怎么让其相减结果为0呢,只需要改成sub,ebp,ebp即可。
我们直接改一下,之前这一条sub指令是四个字节的,但是更改为sub ebp,ebp之后,只占两个字节,为了不影响后续的指令,再加上两个空指令nop填充。
最后神奇地发现,僵尸只要被打了一炮就死了,至此,我们从CE工具的角度完成了该功能的调试,紧接着我们做一个小程序实现这个功能,这个程序的要完成的任务很简单,就是直接修改内存地址为0x0054D0BA的指令修改为sub ebp,ebp, 然后再用两个nop填充即可,如上图,即把0x29,0xED,0X90,0X90这四个字节填充到0x0054D0BA处。
实现代码:上海市初中学生综合素质评价登录入口
宝可梦属性克制表2024最新,18种属性克制关系
王者荣耀排位巅峰赛荣耀战力加分公式规则2024
魔塔50层攻略隐藏道具图解,魔塔50层详细图文攻略
美国zoom动物仙踪林详情介绍
重装机兵攻略隐藏物品图文详解,战车具体位置
推荐几款超污的手游游戏,6个很污的养成类游戏
希尔薇攻略
原神主c排行2023,4.2目前各系最强主c角色排名
action对魔忍
动作游戏
2233盒子
其他游戏
oppo助手2.0
其他游戏
touchitrikka
益智休闲
qq飞车测试服
赛车竞速
青云纪事
角色扮演
泰拉tmodloader
其他游戏
菜菜音乐盒
其他游戏
迷你世界老版本0.44.2版本
模拟经营
极乐园
聊天交友
湖北农村商业银行
金融理财
51品茶
交友约会
极乐园paradise
聊天交友
丝目
社交聊天
七点工具箱
工具应用
酷狗输入法(搜狗输入法)
常用工具
shopee东南亚跨境电商
境外购物
日本大阪usj
生活实用