逆向核心原理:第二十章 内嵌补丁 与教科书不同的另一中打补丁方式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中插入字符串修改代码和修改循环校代码:

 

 画红圈的是插入的代码

 

 

最后的结果:

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值