Crackme025 的逆向分析
1.程序观察
程序刚打开时,会有一个弹窗,有5秒的倒计时。倒计时结束之后弹窗才可以关闭。我们可以看到弹窗的标题就是“Kill This Nag Screen”,意即让我们想办法去除这个弹窗。
弹窗时间结束之后,才是程序的本体。但只有一个输入框,看来这个程序应该只有一个正确的序列号。所以这个程序的主要目的应该是去除弹窗。
2.简单查壳
程序使用 VB5 编写,没有壳。
3.程序分析
先使用 VB Decompiler 打开程序。可以看到程序共有3个窗体
有一个叫做 Form_Load 的程序块,我们可以看到,该程序块反编译的代码只有3行
很明显就可以看出来这就是控制窗体是否显示的关键代码。
使用 OD 载入程序,转到对应代码处
在调用第一个函数前,程序在栈中压入了两个参数
第一个参数是0,第二个参数不知道是什么,但猜测是相应窗口的名字之类的东西。
第二个函数的两个参数分别是-1和窗口的名字
当第一个参数为 -1 的时候,该窗口就会显示;当该参数为 0 的时候,该窗口就会消失。
只需要把第一个函数的参数改为 -1,第二个函数的参数改为 0即可去掉弹窗。
接下里该寻找正确的序列号
转到 check 按钮事件的代码处,向下看,可以看到一个比较函数
函数的两个参数
一个参数是字符串"55555",另一个字符串"123"是我们输入的。
所以 55555 一个就是正确的序列号。