[练习]多体位轮爆式破解练习
作者:互联网
前戏一:先打开软件看一下
点击注册
一般有这种注册失败弹窗,都是软件的巨大漏洞。
前戏二: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