从本关开始,各位会初步接触到CE的反汇编功能,这也是CE最强大的功能之一。在第6关的时候我们说到指针的找法,用基址定位动态地址。但这一关不用指针也可以进行修改,即使对方是动态地址,且功能更加强大。
代码注入是将一小段你写出的代码注入到目标进程中并执行它的技巧。在这一步教程中,你将有一个健康值和一个每按一次将减少 1 点健康值的按钮,你的任务是利用"代码注入",使每按一次按钮增加2点的健康值。
步骤 7: 代码注入: (密码=013370)教程中每按一次按钮,会自动减少1点血,你的任务是将其改成每按一次按钮增加2点血。
还记得第5关的不伤血的修改方法吗?这一关就是第5关的加强版。
推荐你从原代码中删除减少健康值的那行代码,否则你得加 3 点健康值。
老样子,根据动态数据反复查找
,查找血量
的地址,然后再地址上 右键=> 查找写入的地址
,为啥不是查找访问的地址呢?这里不需要明白,照着做就可以了
然后按一下打我按钮
,会出现一行汇编代码 0042585D - 83 AB 78040000 01 - sub dword ptr [ebx+00000478],01 <<
这条指令的作用是,将[ebx+678]
地址中的数据减1,sub为减法的汇编格式。
双击那行代码,看下详细信息:
这行代码什么意思呢?sub 大家都知道是减少的意思
图示红框处:EBX=0184D5E0
,我们用计算器算一下(注意是16进制的)
184D5E0+ 478 = 184DA58
---> 正好是血量的动态地址
sub [ebx+00000478] = sub [184DA58]
够清楚了吧,这就是让血量减1的代码(1省略了),其实CE中也有提示 Decrement by 1 。
明白了这行代码的意思,我们回去看看Tutorial的要求:把减1改成加2。
继续操作。选择反汇编程序
,如下步骤
点击工具
,选择自动汇编
第一步:选择CT表框架
代码
第二步:选择代码注入
对应的地址不要搞错了,是"Tutorial-i386.exe"+2585D
,这里不需要动,保持默认就可以
然后按确定
,会自动生成
汇编代码,这些代码是什么意思,我们不用管,找到关键的一行:sub dword ptr [ebx+00000478],01
将原来的sub dword ptr [ebx+00000478],01
,改成 add dword ptr [ebx+00000478],02
,每次递增2
然后在地址栏就可以看到这个脚本了,点击前面的 单选框 执行,然后点击Tutorial中的打我,这关就可以过了。
你感觉到他的神奇了吗?逆天级的修改:
1、怪物每次打我从伤血变成加血。
2、子弹越打越多。
3、钱越花越多。
如果你学会了这一关,你已经脱离菜鸟的行列了,已经可以对付绝大部分的游戏了。