其他分享
首页 > 其他分享> > [练习]多体位轮爆式破解练习

[练习]多体位轮爆式破解练习

作者:互联网

前戏一:先打开软件看一下

 

点击注册

 

 

一般有这种注册失败弹窗,都是软件的巨大漏洞。

前戏二:DIE查一下软件信息

OK,前戏做足,开始办正事。

体位一:通过搜索报错信息破解

既然有报错信息,那就OD载入先搜索一下看看

 

点击JMP看一下

那就简单了,找到跳过这个JMP的跳转看一下

发现是一个JE。这个JE完整的跳过了注册成功的信息。上面是一个关键CALL,毫无疑问这个JE就是关键跳

 

既然找到关键CALL,关键跳,进CALL改EAX,还是JE改JMP或者直接NOP就随意了。

 

体位二:通过设置MessageBox断点破解

因为软件注册失败有报错弹窗,所以可以下一个MessageBox断点

重新载入OD,下断点

F9运行,点注册,填上任意注册码

程序停在了断点处,看一下机器码,是系统领空,OK,F8单步运行看看

 

记下这个机器码,将刚才设置的其他断点禁用。

 

重新载入,F9运行,程序停在断点处,按F7进CALL,F8继续单步。寻找一个能跳过CALL验证的跳转.

发现F8到一个CALL的时候程序又运行了,而且还是在系统领空。

重复上面的步骤:下断点---重新载入---F7进CALL---F8继续下一步

 

 

 

 

(F4跳过有时会直接运行程序,可以配合修改Z标志位跳出循环。)

依然在系统领空,继续F8

终于来到了程序领空,可以看到刚跳出来的错误弹窗的CALL,而且发现有一个JMP跳过了错误提示

但同时有一个跳转进来,跳过JMP,这跳转应该就是关键跳。

 

发现果然是第一种方法时候找到的关键跳

那后面就没什么好说的了,和之前的操作方法一样。

 

体位三:暂停法

OD载入程序后,直接F9运行,点击注册,任意输入注册码,弹出报错信息。

此时不要点确定关闭弹窗,回到OD,点击工具栏上暂停(或者按F12),然后点击工具栏上的“K”图标

(或者F12暂停后直接ALT+F9“执行到用户代码”更快捷,可以跳过“显示调用”这一步)

点击“K”图标后,进入下图界面。

此时可以看到有两个“user32.MessageBoxExA”,而且都在程序领空。任意选中一个,右键---显示调用

回到了反汇编窗口,发现确实是调用信息框的那个CALL(user32.MessageBoxExA)。F2下个断点,重新载入。

重新载入后,继续F9运行,软件弹出注册界面,任意输入注册码,点击注册。程序停在了刚才下的断点处。

F8单步,发现程序运行了。

没关系,正常情况。点报错弹窗的确定让程序暂停,再回到OD。

继续F8,出CALL。看看有没有一个跳转能跳过这个控制报错弹框的CALL。

果然有一个JMP能跳过信息框。

 

再看一眼左侧红圈出进来的跳转是不是之前找到过的关键跳。

果然是,那没有什么可说的了。

 

总结:

其实上面的几种方法都只是一个思路,都未必能够直接破解掉。

为啥呢?

因为只是找到一个能跳过报错信息的跳转,不管用什么办法令这个跳转不实现,那也只是跳过了一处验证而已。

一个软件作者很可能设置很多处的验证,只跳过一处是没用的。

最低限度,起码得有一个重启验证吧。

重启后软件一检查发现注册码都没有或者不正确,还是要你重新注册。

所以说,找到正确是注册码才是根本的解决之道。

那怎么找呢?

思考一下:决定一个跳转是否实现的因素是什么?

是它前面的CALL。

软件如何能判断用户输入的注册码是对是错?必然是因为它内部存在正确的注册码。(这里只讨论不需要联网验证的单机版软件)

当用户输入注册码后,会和正确的注册码进行比对。

这个比对的过程就是在关键CALL里进行的。

那就进关键CALL内部去寻找注册码。

 

最后一步:寻找注册码

 

在之前找到的关键CALL的位置F2下个断点。重新载入后,F9运行。

输入假码,点注册。

程序停在了断点处,F7进CALL,再F8单步,发现程序在对我们刚输入的假码进行比对。

 

继续F8,真码就要出现了。

OK,把这行疑似的真码复制下来,注册页面试一下,注册成功。

 

标签:F8,练习,CALL,体位,跳转,报错,断点,注册码,爆式
来源: https://www.cnblogs.com/vawa1900/p/10616765.html