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

一、前期准备

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

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

 逆向工程核心原理 第20章patchme内嵌补丁实践_第1张图片            

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

二、破解过程

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

逆向工程核心原理 第20章patchme内嵌补丁实践_第2张图片

(二)步入第一个call调用

逆向工程核心原理 第20章patchme内嵌补丁实践_第3张图片

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

逆向工程核心原理 第20章patchme内嵌补丁实践_第4张图片

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

逆向工程核心原理 第20章patchme内嵌补丁实践_第5张图片

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

逆向工程核心原理 第20章patchme内嵌补丁实践_第6张图片


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

逆向工程核心原理 第20章patchme内嵌补丁实践_第7张图片

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

逆向工程核心原理 第20章patchme内嵌补丁实践_第8张图片

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


逆向工程核心原理 第20章patchme内嵌补丁实践_第9张图片

三、打补丁

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

逆向工程核心原理 第20章patchme内嵌补丁实践_第10张图片

逆向工程核心原理 第20章patchme内嵌补丁实践_第11张图片

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

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

逆向工程核心原理 第20章patchme内嵌补丁实践_第12张图片

(二)插入代码。。

逆向工程核心原理 第20章patchme内嵌补丁实践_第13张图片


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

    逆向工程核心原理 第20章patchme内嵌补丁实践_第14张图片                         



你可能感兴趣的:(逆向工程核心原理)