一、打开教程,因为我的电脑是64位的,所以打开这个(x86_64)
二、 跳转到步骤9,并让ce读取其内存
三、使用之前教程学到的知识,找到四个角色的健康值地址(找到即可,不必找基址),值得注意的是,数值是单精度浮点数!
四、右键跟踪任意一个角色的改健康地址代码
我选择的是Dave,打开跟踪窗口后
攻击一下Dave,跟踪窗口会追踪修改健康值的具体地址
五、显示改指令的反汇编程序 ,进入内存浏览
六、点击菜单栏中的工具,选择 【分析数据/结构】
点击结构,创建新的结构,回车
群组中填上Dave的地址代码-8 【因为我们查找出来的指令是[rbx+08],所以rbx可能是该角色结构的基地址】
按下组合键Ctrl+A,可以添加群组,再依次填上其他角色的地址(下图是重新找过一遍的地址,上面演示的时候电脑太卡闪退了,这里就不重复截图了,所以地址跟上图对不上,大家了解方法即可)
七、观察结构差异,我们发现同一阵营的Dave和Eric结构基址偏移14的值是整形1,而另外两位是2,由此可以得出偏移14为阵营区别
八、回到内存视图
选择菜单栏中的工具,最后一个功能自动汇编
选择菜单栏中的模板->代码注入
在newmem标签下注入以下代码
cmp [rbx+14],1
je returnhere
subsd xmm0,xmm0
代码意思是,如果角色阵营为1,啥也不干,结算完毕,如果阵营为2,则把即将赋值给健康的寄存器清零,因为xmm0寄存器是浮点数,不能用sub指令,需要用subsd指令
完整注入如下
点击Execute注入这段代码
九、重新开始游戏,可以发现,我们把对手秒杀了