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

上一次我介绍了一种自己调试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中插入字符串修改代码和修改循环校代码:

 

 画红圈的是插入的代码

 

 

最后的结果:

 

 

 

 

 

 

 

 

  

posted @ 2020-11-18 12:10  乘舟凉  阅读(137)  评论(0编辑  收藏  举报