《逆向工程核心原理》学习笔记一

目录

一.总结:

二.编译测试程序

三.修改字体

四.通过查找字符串快速找到主函数

五.修改字符串

方法一:直接修改内存缓冲区数据

在内存窗口中按ctrl+g跳转到字符串408044所在地址,选中这块数据再按ctrl+e编辑

方法二:在另一块内存区域写入字符串

六.保存修改后的文件

七.运行输出,乱码问题


一.总结:

1.ollydbg201和110界面设置不太一样,新电脑打开可能字体比较小,有需要修改字体

2.ollydbg中编码有unicode16,utf8,ascii,windows系统默认的936gbk编码可能会输出乱码

        这里推荐两篇文章彻底弄懂 Unicode 编码,Unicode字符编码

3.有两种patch方式修改字符串

        ①第一种是直接修改字符串缓冲区的值,这样做并不安全,尽量不要改变字符串长度,可能会影响到后续的代码区

        ②第二种是在一块空内存区域写字符串并且修改调用字符串的地址,这样更安全更自由,对字符串长度的限制就解除了.

4.找主函数入口有两种方法

        ①可以通过单步调试,一直按f8直到控制台输出数据的方式找到主函数入口,但这样不适合代码量比较大的情况.

        ②通过search for ,all referenced strings找到引用的字符串可以更快的找到函数入口

5.记得保存修改后的程序

        

二.编译测试程序

在visual c++中选择win32 release编译一个helloworld程序,记得要加system pause,不然程序运行一闪而过.然后找到编译出来的exe文件,用ollydbg打开,书上用的应该是ollydbg110,我个人开始用的是201,界面略有不同.

 

三.修改字体

打开如果发现文字很小可以修改,选择左上角options options fonts里面的change即可调整字体

然后在窗口中右键就可以选择字体

四.通过查找字符串快速找到主函数

这里已经找到过过主函数入口,并且打了断点,401000即主函数所在位置

我们可以通过右键快速查找字符串

最左边是这条语句的地址,command里面可以看到压栈操作,说明字符串保存在首地址00408044的内存单元中

 按ctrl+g跳到401000,发现两条打印语句

 

五.修改字符串

方法一:直接修改内存缓冲区数据

在内存窗口中按ctrl+g跳转到字符串408044所在地址,选中这块数据再按ctrl+e编辑

 可以看到已经改成了"world!hello,"

 

方法二:在另一块内存区域写入字符串

下面这条语句用另一个方法,在内存中找到一块空值区域,这里选择的是首地址40BBC0,选中区域ctrl+e编辑,我在utf-8里输入了"世界很好!",

 保存字符串之后在cpu窗口修改指令,按空格或者双击即可,修改地址到40bbc0

六.保存修改后的文件

右键内存地址窗口,edit,选择copy to executable

 会弹出一个新窗口,然后再右键选择save file,修改名称后缀改为.exe即可保存修改后的程序

七.运行输出,乱码问题

按f9运行发现第二个函数输出了乱码,这里是因为windows控制台默认编码不是utf-8

 

 右键控制台可以查看属性,发现是936编码,测试过如果修改成utf-8会正常显示

只需要在语言 ,右边栏管理语言设置,更改系统区域设置勾上beta版确定然后重启即可修改为utf-8.不过这个修改会导致一些使用936编码的汉化软件出现乱码问题,比如之前使用的visual c++6.0中文版,界面选项一堆乱码,这里就不修改演示了.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OrientalGlass

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值