逆向工程核心原理学习笔记(五):实战“打补丁方法”修改字符串
2017-06-16 15:09
381 查看
打补丁方法可以修复程序的BUG,给程序添加新功能。
打补丁的对象可以是文件,内存,数据,代码,等等。。。
我们今天就用打补丁的方法来把helloworld程序中的字符串改掉!
首先呢,OD载入程序,
然后,我们跳到程序入口点,也就是main函数,之前我们讲过,可能大家也记得,0x401000.
我们可以清楚的看到helloworld字符串存放在了push 0x40ED00,这个地址,然后,我们在数据区(左下角),跳过去。
我们看到了字符串,然后呢,我们选中helloworld这几个字,然后按下Ctrl+E,快速编辑。
编辑的时候要在Unicode里面编辑,最好字数相同,防止内存溢出。
然后确定。
然后我们F9运行起来,看看效果:
当然,这还没有完事,因为如果我们关掉OD,程序还是没有被修改的,我们现在的修改只是暂时的。
我们如何保存我们修改的程序呢?
很简单,
选中我们修改的字符串,当然也可以往后多选中一点。
鼠标右键:
点击复制到可执行文件,然后在弹出的窗口继续鼠标右键,保存文件:
保存到桌面:
我们双击运行一下测试:
成功!
大家有没有新的收获呢?
打补丁的对象可以是文件,内存,数据,代码,等等。。。
我们今天就用打补丁的方法来把helloworld程序中的字符串改掉!
首先呢,OD载入程序,
然后,我们跳到程序入口点,也就是main函数,之前我们讲过,可能大家也记得,0x401000.
我们可以清楚的看到helloworld字符串存放在了push 0x40ED00,这个地址,然后,我们在数据区(左下角),跳过去。
我们看到了字符串,然后呢,我们选中helloworld这几个字,然后按下Ctrl+E,快速编辑。
编辑的时候要在Unicode里面编辑,最好字数相同,防止内存溢出。
然后确定。
然后我们F9运行起来,看看效果:
当然,这还没有完事,因为如果我们关掉OD,程序还是没有被修改的,我们现在的修改只是暂时的。
我们如何保存我们修改的程序呢?
很简单,
选中我们修改的字符串,当然也可以往后多选中一点。
鼠标右键:
点击复制到可执行文件,然后在弹出的窗口继续鼠标右键,保存文件:
保存到桌面:
我们双击运行一下测试:
成功!
大家有没有新的收获呢?
相关文章推荐
- 逆向工程核心原理学习笔记(五):实战“打补丁方法”修改字符串
- 逆向工程核心原理学习笔记(六):实战开辟新内存区域写入缓冲区跳转修改字符串
- 逆向工程核心原理学习笔记(六):实战开辟新内存区域写入缓冲区跳转修改字符串
- 逆向工程核心原理学习笔记(二):字符串检索法查找main函数
- 逆向工程核心原理学习笔记(三):检索API方法
- 逆向工程核心原理学习笔记(四):检索API方法2-设置断点
- 逆向工程核心原理学习笔记(三):检索API方法
- 逆向工程核心原理学习笔记(二):字符串检索法查找main函数
- 逆向工程核心原理学习笔记(十一):栈
- 逆向工程核心原理学习笔记(九):小端序标记法2
- 逆向工程核心原理学习笔记(二十二):栈帧9:调用printf()函数
- 逆向工程核心原理学习笔记(二十):栈帧7:删除函数add()的栈帧&函数返回
- 逆向工程核心原理学习笔记(二十四):abex'crackme #2 初探
- 逆向工程核心原理学习笔记(十八):栈帧5:设置add()函数的局部变量(x,y)
- 逆向工程核心原理学习笔记(二十七):abex'crackme #2 破解算法
- 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈
- 逆向工程核心原理学习笔记(十四):栈帧1
- 逆向工程核心原理学习笔记(十):IA-32寄存器基本讲解
- 逆向工程核心原理学习笔记(二十五):abex'crackme #2初步破解
- 逆向工程核心原理学习笔记(一):寻找程序的主函数(Main)