逆向核心原理:第二十章 内嵌补丁 与教科书不同的另一中打补丁方式2

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:32   2618   0

上一次我介绍了一种自己调试patchme的独特方式,今天介绍另一中方法

上次的网址 https://www.cnblogs.com/czlnb/p/13996202.html

代码结构:

这一次我们要插入的地方是代码块4的末尾,因为这个地方已经运行了解压程序,但是没有运行校验程序,所以我们要修改代码块5的校验程序,以跳过它。

但是代码块5,是被加密的,所以要在代码块4中用代码来修改代码块5

总结一下 完成数据块A中字符的修改需要3步

1.将代码块4复制到空白区(这样就有空间插入我们的代码了)

  原来代码块4的地址是在4010bd,现在我们把它放到401280 见下图

调用代码块4的指令也要改动

修改前:

修改后:

2.将填充校验的nop指令字节和要修改的字符串放入空白区

下图是校验代码

被圈起来的是比较指令,只有校验值为b08deb31(小端序)时才运行正常的代码,所以我们将这条指令填充为nop,直接跳入下一条指令

但是这部分代码是被加密的,所以我们用洞穴代码来修改

在401300处放入nop字节:

在401350处和401360处插入字符串:

3.在4012ab中插入字符串修改代码和修改循环校代码:

画红圈的是插入的代码

最后的结果:

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP