CE学习到第9关,这里记录下通关方法和思路
1:先分析出代码结构
2:再进行代码注入。
分析的方法是:
1:先找到玩家1,玩家2,玩家3,玩家4的健康值的位置,具体方法相信在前几关已经学会了。
2:任选一个,我这里选择的是角色4。
2.1 右键->找出是什么改写了这个地址 ,然后在游戏界面攻击角色4.
2.2 回到CE界面(图(2.1)),选中指令,然后点击右边的显示反汇编程序。然后会有弹窗如图(2.2)。
2.3 在弹窗后,选中指令,右键->找出指令访问的地址。回到游戏界面,分别点击攻击角色1,角色2,角色3和角色4,会出现图(2.3)
2.4 全选所有的指令,然后右键->打开选中地址的分析数据,出现结构进行分析。我们可以看到
偏移8是健康值,偏移14是类别,偏移19是名称。偏移14可选值为1或者2。
图(2.1)
图(2.2)
图(2.3)
图(2.4)
图(2.5)
图(2.6)
图(2.7)
图(2.8)
图(2.9)
第二步,代码注入
1: 先在内存器查看窗口,点选工具->自动汇编
2:在新弹窗中选择模板->代码注入
3:在新弹窗中,先判断是否是队友,然后进行不同的跳转,代码修改完毕后点击注入。具体代码在下方。
4:验证,点击重新启动游戏并验证,可看到效果。
具体代码,可以复制
alloc(newmem,2048,"Tutorial-x86_64.exe"+2F25D)
label(returnhere)
label(originalcode)
label(exit)
newmem: //this is allocated memory, you have read,write,execute access
//place your code here
cmp [rbx+14],1 //判断是否是玩家
jne originalcode //不是玩家,直接跳转到原代码执行
jmp exit //是玩家,调到exit处,不对玩家血量进行修改
originalcode:
movss [rbx+08],xmm0
exit:
jmp returnhere
"Tutorial-x86_64.exe"+2F25D:
jmp newmem
returnhere: