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

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

在逆向核心原理中,第二十章的实验是调试patchme  见下图1

 

 

           图1

最后实验的结果:

 

 

 

书上的思路是修改跳入OEP的jmp指令,以此来插入自己的代码,但是这部分的指令是被加密过的,所以修改它时要手动做加密,十分麻烦。

所以我想出了一个更好的办法:因为我们要插入字符串,而字符串是被加密的,而且后面还有校验检查代码是否被改动,所以我们的代码一定要插入在解密和校验之后运行的地方。而跳转这个地方又不用修改被加密的指令。

我分析出了patchme的代码结构  见下图2

序号代表了执行顺序    右边的代码是在执行块中的

 

 

                                        图2

由图可知,4010286处的代码块6在校验代码块5的后面,而且在这里没有被加密过,所以把我们的代码插入这个函数是再好不过了。注意:因为代码块5是在运行中被解密的,所以Ollydbg可能不能正确显示 ,按ctr + a刷新一下就好了

可是这部分代码后面紧挨着代码块3,已经没有空间插入我们的代码了。

不怕,我们可以把代码块3复制到别的地方

 

所以总结下来 要完成修改要有三步:

1:把代码块3插入别的地方,以腾出空间插入我们的代码

首先修改跳转代码块3的指令

修改前:

 

修改后:

 

 

 

然后将代码块3复制到  401300(结合节区头可知401280--401400是空闲的)

 

 

 

 2.将我们要插入的字符串加入文件(我加入的位置是401350和401370)

 

 

 

3.在代码块6处插入我们代码

 

 

 最后运行的结果

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值