|
|
| | 网站首页 | 初级教材 | 中级教程 | 高级教程 | 模块文档1.8 | 资源下载 | 外挂海论坛 | 加入外挂作坊 | | ||
|
||
|
|||||
|
|
|||||
| 05-改汇编指令 | |||||
|
很多新手认为,读取改写内存数据只能于用游戏中的各种属性数值,事实上确并非如此,游戏程序的所有执行代码,资源,及运行中时的各种处理的数据都是在内存里的,也就是说,一切都是可以在内存里进行操作修改。 本节教大家理解一下如何修改在汇编指令与指令后的立即寻址的操作数。 本节例子包解压缩出来后的文件有这些
运行 a.exe 后上面会有个按钮,单击会弹出信息框, 本节的主旨就是修改掉这个弹出的信息框的标题与提示内容。或许我们可以直接在内存里找到上面的这几个文本改成别的,但在某些情况下,是不能这么改的。比如见下面的内存图所示
在内存中信息框内容是 "你好,易语言" 看内存里红框处,文本型数据在内存里是以字节 0 为结尾的,在这个0之后马上就是38 00 00 00属于其它的数据了。如果我们想要改进一段内容超过了上面原所用到的 12字节 长度将会造成破坏了别的数据。这是不行的,会导致程序崩溃的。 所以只得修改其相应要读取这段文本的汇编指令后的操作数寻址方式了。 使用OD加载 a.exe 按F9运行程序,按 Atl+M 打开内存映射窗口,在这个窗口找到最先出现的名为 .ecode 区段,该区段即是易格式执行原体所在,上面显示的是 00403000 按F2在该区段下断点。
这里是按钮被按下后将要被执行的代码段。 当按下按钮后,会被中断在 004032F2 处,然后我们取消掉 .ecode 区段的断点,在 004032F2 上按F2设置断点即可。 接着我们按F8单步步过调试,来到004032FC处,在这条代码上右键菜单->数据窗口跟随->立即数 。就能在下面的内存窗口里看到 提示: 这段文本内容了。 因为 PUSH 是入栈指令,指令后面跟了内存地址为操作数,如果我们的程序修改这个入栈指令后面的操作数内存地址为我们想要使用的文本内存地址的话,就能达到修改这个弹出信息框的标题及信息内容了。
另外如果我们在这段汇编子程序的入口 004032FC 把这个PUSH EBP 改成返回指令 RETN 的话还可以禁止这个信息框的弹出了。 思路已经明朗,现在我们进行实际操作。 设计一个插入DLL的程序与一个钩子DLL。
这个钩子DLL里的主要实现的代码功能如图。
程序运行效果,把钩子DLL插入a.exe 然后按 #HOME 键呼出窗口,在呼出窗口里点击设置新信息框内容后。再在a.exe上的按钮点时时,弹出来的信息框内容都已被成功修改了。也可以点击 使弹出信息框无效 这个按钮后,a.exe 上的按钮怎么点也不会再出来信息框了。 本节完。 现在大家知道了如何修改汇编指令与指令后所跟随的操作数了吧?通过修改这些指令或操作数可以达到改变别的程序对于某段功能的执行流程。 |
|||||
| 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
|
|||||||||||
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|