步骤 9:注入++ (PW=31337157) 这一步基本上和步骤 7(代码注入,手记中的第六关)的做法是相似的,不过会稍稍有点难度。 本关你必须用一小段代码来修改减少血值的原代码,并且做到,如果当前时间的秒数大于或等于 30 将血值设置为1000,如果当前时间的秒数小于 30 将血值设置为 2000。 我们可以用 API 调用函数获取当前的时间,并利用 自动汇编 完成这项任务,但这里好象有更简单的做法:C语言脚本注入。 找到血量的地址,然后打开 CE 脚本引擎 (内存查看器窗口 快捷键:ctrl+alt+a ,或是点击 工具->脚本引擎)。 然后,和其它的教程不同的是,这在里我会多给你一些提示(假设你从未接触过C语言)。 ---------------- #include struct tm *timep; time_t c; c=time(0); timep=localtime(&c); if (timep->tm_sec>=30) *(int *)addresstochange=1000; else *(int *)addresstochange=2000; ------------- 使用血值的地址替换代码中的 addresstochange,另外,不要忘记在地址的前面加上 0x 。比如,地址是 0012345,则输入 0x0012345,选择 "注入" ,"注入到当前进程" ,将代码注入到当前进程,此时,"自动汇编"窗口 弹出,并自动生成调用代码(Call)。 现在,就象步骤 7 (手记中的第六关)那样,在 "内存查看器"窗口 选择代码地址,在 "自动汇编"窗口 选择 "模板","代码注入",输入刚才获取的调用代码(Call)。 要注意的是,调用代码(Call)将更改 寄存器 EAX 的数据,因此,有必要的话,你应该在压栈之前和出栈之后保存它, 你也可以将原代码移除,它在这里也起不到什么作用了。 点击 "执行" ,点击 Tutorial.exe 窗口上 "Hit me" 。 如果没什么问题的话,血值会按照当前的时间变动。 额外信息: 正如前面所说,CE 支持标准的汇编语言。所以,你可以在代码中使用函数名称来调用函数。 你也可以在脚本中引用 DLL 文件,例如: injectdll(mydll.dll) // 可以使用你喜欢的语言去写DLL文件 codecave: call functionofmydll jmp exit 这一关,多少得了解一点点的C语言,不过,作者怕我们没有接触过C语言,给了我们一段C语言的代码,在说明的结尾又告诉我们,可以引用我们自己用任何语言写的DLL文件,增加CE脚本的灵活性;虽然有点头蒙,不过完成本关不需要那么麻烦,还是一步一步的来。 我们先查找 Tutorial.exe 中的数值地址,找到后,"查看写入该地址的代码",点击 Tutorial.exe 中的 "Hit me" ,"显示反汇编",如下图: 在 "内存查看器"窗口 中打开 "脚本引擎" ,如下图: 在 "脚本引擎" 窗口 填入说明中的那段代码,并将 addresstochange 替换成我们查找到的数值地址,如下图: 你可以按上图在原代码中加入 红框标识出的 代码(声名变量并赋值,值为地址,记得地址前要加 0x),也可以直接用地址替换掉 addresstochange ;将写好后的代码注入当前进程,如下图: 在打开的 "自动汇编"窗口 中 生成了调用代码,如下图: 在 "内存查看器" 选择查找到的汇编地址,回到 "自动汇编"窗口 选择 "模板" 中的 "代码注入",如下图: CE 自动将选择的汇编地址填入(如果不正确,可以手动填写),如下图: "确定" ,生成如下图代码: 我们需要将代码修改一下,将 Call 这一条放置在 newmem 区域,将原代码注销掉,如下图: 小提示:好多网友在这段代码改写完,出现了结果为 999 或 1999 的这种情况,这可能是我没标注清楚的原因,请大家留意上图中代码 "dec [ebx+00000318]" 前边我添加了 "//" ,这表示将这条代码注释掉了,好多网友出现了这种情况应该都是忘了注释掉它的结果;感谢 78461 网友的提醒! 原理在第六关已解释过了,在这就不多讲了吧,点击 "执行" ,回到 "内存查看器" 窗口,可以看到,原代码地址处的代码已修改,如下图: OK,我们已完成代码段的注入,现在可以点击 "Hit me" 了,说明中给出的C语言代码,是调用了本地的时间,如果秒数大于等于30秒,就将血加到 1000 ,小于30秒,将血加到2000,如果一切没问题的话,next 按钮激活。我给出两张不同时间的对比图: 点击 next 按钮,通关画面,可惜不是动画的…… 至此,教学八关就完成了,但这仅仅是个基础,有空我们再研究如何实战,以及如何制作游戏的修改器~ |
免责声明
本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!
|Archiver|手机版|小黑屋|联系我们|宝峰科技
(
滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )
Copyright © 2001-2023 Discuz! Team. GMT+8, 2025-5-7 07:02 , File On Powered by Discuz! X3.49