网站公告列表     加入外挂作坊终生会员200元,获取最新外挂作坊模块与加入会员群  [admin  2007年8月3日]        
您现在的位置: 外挂作坊 >> 第八章 汇编调试 >> 文章正文
  [组图]05-改汇编指令         ★★★ 【字体:

 

  05-改汇编指令
 

很多新手认为,读取改写内存数据只能于用游戏中的各种属性数值,事实上确并非如此,游戏程序的所有执行代码,资源,及运行中时的各种处理的数据都是在内存里的,也就是说,一切都是可以在内存里进行操作修改。

本节教大家理解一下如何修改在汇编指令与指令后的立即寻址的操作数。


本节演示例子包下载

本节例子包解压缩出来后的文件有这些

运行 a.exe 后上面会有个按钮,单击会弹出信息框,


本节的主旨就是修改掉这个弹出的信息框的标题与提示内容。或许我们可以直接在内存里找到上面的这几个文本改成别的,但在某些情况下,是不能这么改的。比如见下面的内存图所示

在内存中信息框内容是 "你好,易语言" 看内存里红框处,文本型数据在内存里是以字节 0 为结尾的,在这个0之后马上就是38 00 00 00属于其它的数据了。如果我们想要改进一段内容超过了上面原所用到的 12字节 长度将会造成破坏了别的数据。这是不行的,会导致程序崩溃的。 所以只得修改其相应要读取这段文本的汇编指令后的操作数寻址方式了。


使用OD加载 a.exe 按F9运行程序,按 Atl+M 打开内存映射窗口,在这个窗口找到最先出现的名为 .ecode 区段,该区段即是易格式执行原体所在,上面显示的是 00403000 按F2在该区段下断点。
在OD的CPU反汇编窗口上按 Ctrl+G 跳转框,输入 00403000 确定。来到易格式原体的反汇编区段。
然后回到a程序,按下程序上的那个按钮,此时会被OD中断下来,停留在004032F2处。

这里是按钮被按下后将要被执行的代码段。

当按下按钮后,会被中断在 004032F2 处,然后我们取消掉 .ecode 区段的断点,在 004032F2 上按F2设置断点即可。

接着我们按F8单步步过调试,来到004032FC处,在这条代码上右键菜单->数据窗口跟随->立即数 。就能在下面的内存窗口里看到 提示: 这段文本内容了。

因为 PUSH 是入栈指令,指令后面跟了内存地址为操作数,如果我们的程序修改这个入栈指令后面的操作数内存地址为我们想要使用的文本内存地址的话,就能达到修改这个弹出信息框的标题及信息内容了。

 

另外如果我们在这段汇编子程序的入口 004032FC 把这个PUSH EBP 改成返回指令 RETN 的话还可以禁止这个信息框的弹出了。


思路已经明朗,现在我们进行实际操作。

设计一个插入DLL的程序与一个钩子DLL。

这个钩子DLL里的主要实现的代码功能如图。

程序运行效果,把钩子DLL插入a.exe 然后按 #HOME 键呼出窗口,在呼出窗口里点击设置新信息框内容后。再在a.exe上的按钮点时时,弹出来的信息框内容都已被成功修改了。也可以点击 使弹出信息框无效 这个按钮后,a.exe 上的按钮怎么点也不会再出来信息框了。

本节完。


现在大家知道了如何修改汇编指令与指令后所跟随的操作数了吧?通过修改这些指令或操作数可以达到改变别的程序对于某段功能的执行流程。


文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
           
    客服QQ:147422159 技术QQ:42724920 浙ICP备06023406号 近期项目多,在线时间不定,有事请QQ留言 Copyright © 2006 www.zuowg.com Inc. All rights reserved.外挂作坊.版权所有 站长:外挂作坊