X86逆向12:内存补丁的制作

本章我们将学习各种打补丁的方式,补丁在软件的破解过程中非常的重要,比如软件无法脱壳我们就只能通过打补丁的方式来破解程序,补丁原理就是当程序运行起来会被释放到内存并解码,然后补丁就通过地址或特征码定位到关键的位置,并替换关键的跳转。

------------------------------------------------------------
本章难度:★☆☆☆☆☆☆☆☆☆
课程课件:CM_12.zip
------------------------------------------------------------

通过特征码打补丁

1.首先OD附加,CM_12.vmp.exe 这个加过壳的程序,然后我们通过前期学过的内容找到关键跳转,并记录下它的特征码。

根据上方我们可以提取出【0F 84 56 00 00 00 BB 06】这一段代码为特征码使用,我们需要将此处的代码替换成【90 90 90 90 90 90】。

2.按下【Ctrl + B】然后搜索一下【0F 84 56 00 00 00 BB 06】看提取的特征码是否能够定位到关键位置。

3.使用易语言编写一个小程序,然后写入以下代码,即可完成特征码的替换了。

4.编译并生成可执行文件,我们运行程序让其完全加载,然后运行补丁程序,点击打补丁,如下程序会被完美破解。

给DLL文件打补丁

1.OD直接载入CM_12这个程序,该程序会调用check.dll 动态链接库来完成用户名密码的验证,所以我们需要给Dll打补丁。

2.按下【Alt + E】观察发现这个check.dll 基地址是【00F90000】,我们双击这个模块跳转到模块中去。

3.这个程序的破解非常的简单,我们需要将下图中的两个jnz 跳转取反就可以完成验证啦,这里我们记下他们两个的特征码。

4.我们需要将上图中的【0F852F000000/ 0F850F000000】这两处全部替换成【90 90 90 90 90 90】,其补丁程序核心代码如下。

5.运行源程序,并运行补丁,然后我们点击验证Dll ,程序被顺利的破解。

原文地址:https://www.cnblogs.com/LyShark/p/11185259.html