Ollydbg逆向分析并修改helloworld程序

素材来源

来自于书籍《软件逆向工程原理与实践》。第一章的1.5节逆向分析并修改Hello World程序。本文主要是对自己走一遍该流程的记录。

实验内容

使用Ollydbg修改汇编指令,修改字符串。

步骤1:VS2017生成需逆向的文件

visual studio2017新建工程文件,编译程序时选择visual studio的Release模式,减少调试信息。点击本地windows调试器进行编译运行。

在这里插入图片描述
运行结果如下图:
在这里插入图片描述

步骤2:ollydbg中打开该程序的exe文件,找到需修改的位置

在这里插入图片描述
汇编代码窗口可以查看汇编指令,地址等相关信息;我们接下来所做的寻找操作都是在汇编代码窗口完成;
数据窗口可以进行数据修改,我们接下来所做的修改操作都是在数据窗口完成。
执行的修改都是在main函数中,比起一个一个运行。有两种方法可以比较方便的寻找到main函数的主体。

方法一:通过字符串查找

在汇编代码窗口点击右键,选择查找->所有的参考文本字串(英文版中是Search for->All referenced text string)。在被引用的列表中选择“www.xidian.edu.cn”或者是“Hello World!”双击字符串即可查找到这两个字符串的push操作。过程如下::图片1图片2
图片3

方法二:通过调用模块查找

在汇编代码窗口点击右键,选择查找->所有模块间的调用(英文版是Search for->All intermodular calls),在模块间调用API列表查找MessageBoxA()或MessageBoxW(),双击就可快速查找到对该函数的调用,从而找到main()函数。最后是MessageBoxA()或MessageBoxW()取决于编程的时候选择的字符集是多字节字符集还是Unicode字符集。过程如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

步骤3:修改

修改一:修改指令

可以做的第一个修改是对调界面上的“www.xidian.edu.cn”和“Hello world!”这两个字串的位置。简单的作法是对这两个字符串压栈的PUSH指令,将两条指令的地址互换。由图可知,两条push指令的地址分别是F8201B01和0C211B01。
在这里插入图片描述
在最左列可以看到,两条指令的地址在011B002。所有的修改操作都在数据区域执行。
在数据区域快捷键Crtl+G,搜索地址011B002,可以找到该地址,选中需要修改的区域,如下紫色部分。
在这里插入图片描述
快捷键Ctrl+E进入修改。
在这里插入图片描述
在编辑窗口修改该数据,将其修改为0C211B01,点击确定即可。如下图可知,修改成功。
在这里插入图片描述
同样的步骤对后面的0C211B01进行修改,修改为F8201B01。完成两条指令的交换。修改后汇编代码窗口可以观察到两者的变化。如下图所示:
在这里插入图片描述
最后选择被修改的区域,如下紫色部分,在数据区域右键->复制到可执行文件(英文版是Copy to executable file -> All modifications)。在生成的文件中右键->保存文件即可。
在这里插入图片描述
在这里插入图片描述
完成后获得的新exe程序的运行如下,可知对调成功。
在这里插入图片描述

修改2:修改字符串

将原来的“Helloworld”界面上的“Hello world!”字符串,更改为“Hello Student!”,利用步骤二中的方法可以找到该字符串的地址,同样在数据区域找到该位置,选择该区域,当然,由于“Hello Student!”比“Hello world!”要长,因此需要选择稍微大一点的区域,由于该条语句后面都是00,所以多选择区域不会造成错误。Ctrl+E修改。
在这里插入图片描述
直接对ASCII进行操作即可改变汇编代码指令。确定保存。
在这里插入图片描述
同样选择被修改的区域,保存成新的.exe文件。执行效果如下,可知修改成功。
在这里插入图片描述

  • 11
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值