【S02E04】Shark恒 零基础破解教程之图文!【无期徒刑】
汇编太枯燥,我写着也很累,你们休息一下,我也休息一下。汇编还有最后一课,我只讲3课。今天,讲的是时间限制软件如何爆破。
我先介绍一下,这个程序只能在2013年7月1日前运行,如果在这时间之后运行就无法开启了。就好像很多时间限制的试用版软件一样。这种时间判断只是其中的一种而已,并不适用于所有的时间限制软件。如果你凑巧碰遇到了与这个软件判断形式一样的程序,那你就可以用这种方法爆破了。
我们可以把系统时间调整到2013年7月1日之前,打开软件就可以清晰的看到,这是一个试用版,使用时间截至在2013年7月1日0点。好吧,那现在把系统时间改为7月1日之后,从新运行就无法打开了。现在就进行爆破吧!
还记得我在第一季第三集里说的话吗?
正式逆向的第一步是查壳。我在这里就略过了这个步骤,查壳与脱壳的问题大家自己去解决吧。我建议大家不要直接脚本脱壳,尽量锻炼手动脱壳,不管是单步跟踪还是ESP定律或是其他,不管能脱还是不能脱或是遇到种种问题,你都熟悉了一遍脱壳的步骤,这样又可以加深一次印象。
我这里已经脱掉壳并修复完成了,我们来直接载入OD。直接运行一下就可以发现,程序没有任何异常,直接结束了。请看下图。
我们可以试试以前学过的知识,查找字符串或F12暂停,都不能达到目的。那今天我们就学习一个新知识“API断点”BP ExitProcess这个API的作用就是结束程序。有了这个断点,我们就可以在程序执行结束的时候让他停下。我们从载程序,在OD窗口下方Command编辑框内输入BP ExitProcess然后回车。请看下图
此时就下好了断点,我们F9运行程序。然后可以看到程序停在了下图位置。
因为这是系统领空不能操作,所以我们在OD右下角的堆栈窗口0018FCAC 004180BB/CALL 到 ExitProcess 来自 EXIT断点.004180B5这一行右键,选择“反汇编窗口中跟随”看下图
然后我们就来到了程序的领空,请看下图
现在向上找,找到这段代码的段首F2下断请看下图
F2下好断,从载程序,F9运行程序。程序毫无疑问的停在了我们刚才的段首位置。请看下图
继续在堆栈窗口右键,反汇编窗口中跟随。如下图。
就来到了下图位置,我们可以看到这里的跳转很多。
那就可以看看是不是有一个跳转是能跳过我们这个API的。我们可以在下面的一行就看到了一个跳转进入,来源是上面的JMP。看下图
那既然是JMP,怎么会跳不过来?注意JMP底下又有一个跳转进来。那肯定是这个跳转的来源跳过了JMP,所以我们跟随这个跳转来到下图位置
因为这个跳转成功了,所以我们程序退出了。
如果这个跳转不成功,那程序应该就不会退出。
为了验证我们的判断是否正确,所以在这里下了断点。然后从载程序,F9运行到这里被断下。我们可以看到,这个跳转的确实现了。看下图
那我们就修改一下标志位,让他不实现跳转。右侧寄存器窗口的ZF标志位双击置零。跳转未实现。如下图
F9运行程序,看看是否成功运行?
既然如此,那就把这个位置的跳转修改一下保存吧!我们使用这个软件的时候就不会有时间限制的问题了。
有的朋友应该会说,为什么来来回回的从载---运行--反汇编窗口中跟随
而不用我们第二季第一课学习的F12暂停法?这里我不解释,大家可以试试。所以今天你们学到的不仅仅是一个API断点的知识,还学会了什么?
跟着恒大,没错
BP ExitProcess
这个API的作用就是结束程序。
选择“反汇编窗口中跟随”
返回程序领空
{:5_116:}
不错我也多练习几篇
越前越看不懂哎{:6_209:}
一步一步的在学习中看到了希望。
为什么解压后 打开不了
{:5_117:}
软件不知道怎么打不开真心难看懂
边看着教程边做 不是很熟练