逆向工程核心原理学习笔记0x01:寻找指定代码和修改字符串 190602

1.代码执行法,
这种方法不推荐,一步一步f7地按,太麻烦太蠢了。

2.字符串检索法
这个简单,直接crtl+g
寻找字符串,
在这里插入图片描述

3.检索API方法

打开OD,载入程序
在这里插入图片描述

鼠标右键,如图。
在这里插入图片描述

然后就可以看到程序调用的所有API函数,便于分析。

关于api的,点击下面

人话讲api

在这里插入图片描述

找到messagebox函数,双击进去,就是函数所在反汇编地址了
在这里插入图片描述

法4:检索API方法2

同样,还是用我们的那个helloworld小程序,然后,如图所示,查找所有模块的名称
在这里插入图片描述

然后,结果如图所示
在这里插入图片描述

在这个界面,我们敲键盘字母,messagebox,一个一个敲出来,就会自己跳到相应的地址,如图所示:
在这里插入图片描述

因为messagebox这个函数是从user32.dll中实现的,所以我们可以随便点击一个进去看看:

在这里插入图片描述

我们在这个函数的头部按一下F2,设置断点,然后F9运行起来。

然后程序断在了这里
在这里插入图片描述

我们可以清楚的看到里面的地址和内容。

修改字符串的两种方法

1)直接修改字符串缓冲区
2)在其他内存区域生成新字符串并传递给消息函数。

1.直接修改字符串缓冲区
在dump窗口中ctrl+G使用goto指令,找到字符串helloworld,ctrl+e修改

***注意:若新的字符串长度大于原字符串很可能造成数据覆盖导致内存引用错误。
在UNICODE文本框中输入字符串,Unicode字符串必须以NULL结束,它占据两个字
节(添加Null时不能直接在Unicode文本框中进行,而需要在hex文本框中添加00)***

2.在其他内存区域新建字符串并传递给消息函数
00401007处有一处push指令,将数据区域地址为004092A0的字符串压栈(也就是我们的helloword)
我们可以在新的内存区域新建字符串,再改下push的地址
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值