对了上期讲的音乐网站做到一半懒得弄了,今天看了一下网站发现音源有点问题了,就放不了歌,但是能搜索出来歌曲和歌词,就离谱,等下次有机会再放出来吧。这两天也是终于拾回以前一直想弄的东西但是没去弄的想法了,也就是将一个软件破解掉,这里我分享一下破解的思路叭。一个软件,总会有一些付费的功能,有一些软件就是要付费才能进去使用,有没有什么方法绕过然后直接使用功能呢,当然是有的。一个软件想要绕过然后使用其功能,肯定少不了使用之前的验证,一般验证的代码,无非就是if和else,只要找到这个关键点,我们改一下验证的逻辑,不就可以绕过软件了吗。我用易语言写了一个简单的验证软件(开始的时候是用c写的,但是黑乎乎的弹窗一瞬间没了,就不好用),如图:正确的密码是123456,但是我们事先不知道密码,那么点击按钮后,肯定是会验证错误的我们要破解一个程序,必须先知道验证的流程,一个程序大致的验证流程如下:我们可以在流程的任意一处下断点,然后往前跟或者往后跟,一直跟到验证的关键点,找到关键点之后,我们就可以实现破解。但是根据选流程的不同,那么效率也会不同,我们当然选效率更加高的点进行跟踪,也就是靠近验证关键点附近跟,在这里我就直接选择d流程中的点进行跟踪。在进行跟踪之前,我们先来学习一下什么是MessageBoxA?MessageBoxA是 Windows 提供的一个系统函数,用来专门调用一些错误和正确的提示窗口,直接说可能不是很明白,但是看下图你就明白了:学习这个系统函数是因为我们观察到,弹出的错误弹框正是调用了这个函数,那么我们不就有思路了吗,在这个函数这里下断点,那么往回跟一定就是判断关键验证点的地方啊!!!首先把软件拖入od(Olly Dbg)中,一进来是这个界面,注意点在什么地方:还记得刚学的MessageBoxA吗,按住ctrl+G,直接搜索这个,定位到这个点后可以在这加上个注释(按一下;可添加messageboxa注释)按F8一步步走下去直到把程序运行出来,然后观察是哪个点触发了弹窗函数,按F2下断点在这里:然后随便输入一个数字,点击按钮后程序就来到了我们下的MessageBoxA这个断点处,此时注意观察栈的地址(右下角),程序进入错误弹窗的分支(准备弹出错误提示)001AF2B4 0040138D /CALL to MessageBoxA from 破解程序.00401387
第二个参数就是退出这个错误窗口的地址,我们要知道,主程序是在运行的过程中才调用这个错误的函数的,所以我们要退出分支函数,回到主函数,才可以找到关键验证点,所以直接ctrl+G搜索这个地址回到主函数中很明显这就是关键点位置!!!,而且看到有je判断语句,je表示什么呢?既然是这样的话,那我们把断点下在这,然后把je改成jne看看会发生什么聪明的人可能看到了,既然有显示字符串 “破解成功”,那是不是可以直接搜索字符串啊,说的没错,确实是简单的做法,那我就直接搜索看看有没有:很明显,是有的,更离谱的是验证码都给出来了:123456,但是我为啥不一开始就讲这个方法,而是讲正常的思路呢,因为字符串可以被改为16进制的字节,如果别人一开始就将这些字符串换成16进制或者其他编码的符号,那么你怎么搜出来呢,举个例子,以上就是些破解的大概思路,有兴趣的朋友可以了解一下,看一下
