逆向工程核心原理 第20章patchme内嵌补丁实践

一、前期准备

本次要破解的是《逆向工程核心原理》书本中提到的patchme程序

(一)、程序很简单,只有两个窗口

             

程序很简单,但是字符串在程序中都被加密了,所以稍微有点麻烦。

二、破解过程

(一)、使用x32dbg载入程序,按F9跳转到入口点。


(二)步入第一个call调用


(三)按f8步进来到40109B处


仔细分析这段代码,会发现这段代码的是第一轮解密代码,对004010F5到00401249(004010F5+0x154)这个区段的数据异或0x44。


(四)继续按f8步进来到40109B处,可以发现两个循环,这个两个循环都负责解密



(五)继续按f8步进程序会返回到00401038处,此处需要主意的校验和计算和比较校验和的值。


(六)继续运行程序,会发现OEP,如下图


(七)通过查找DialogBoxParamA的api手册,会发现4010F5是指向对话框的指针,跳转到4010F5这个地址之后,在往下滚动,发现字符串(x32dbg将这个区段解析为指令了,ascii码对的上,只能在内存窗口中查看)。



三、打补丁

通过分析pe结构,我们会发现.text头会有很多代码洞空白区域

对上述区域打补丁(其实可以直接修改字符串的)。。。

(一)修改OEP的跳转,这里需要对其指令进行加密运算。。。


(二)插入代码。。



(三)最后,成功(字符串应该先覆盖下的,懒得弄了)、

                             



猜你喜欢

转载自blog.csdn.net/h123120/article/details/79997425