乐者为王

Do one thing, and do it well.

练习破解Andrnalin的Crackme

拿到这个程序,用PEiD查看这个程序,发现是用Microsoft Visual Basic 5.0编写的且没有加过壳,所以用W32Dasm反汇编。通过Functions/Imports查看它调用的函数,能够看见MSVBVM50!__vbaStrCmp字样。

  1. 启动SoftICE,然后运行Crackme程序;
  2. 在文本框中输入12345678;
  3. Ctrl+D来到SoftICE中,输入bpx __vbaStrCmp,按回车后用Ctrl+D命令返回Crackme;
  4. 点击OK,程序被SoftICE中断;
  5. 按F12回到调用__vbaStrCmp的地方;
  6. 按F6切换到代码窗口,移动光标,直到代码窗口中出现如下程序段:
1
2
3
4
001B:00401D70                MOV ECX, [EBP-28]
001B:00401D73                PUSH ECX
001B:00401D74                PUSH 00401A54
001B:00401D79                CALL [MSVBVM50!__vbaStrCmp]

因此可以知道__vbaStrCmp比较的是ECX和00401A54所指向的字符串。记下00401A54这个值,然后重复步骤1、2、3、4。接着查看ECX和00401a54指向的内容就可以知道正确的key了。

d ecx的显示如下:

1
2
0023:0013CC1C 31 00 32 00 33 00 34 00-35 00 36 00 37 00 38 00 1.2.3.4.5.6.7.8.
0023:0013CC2C 00 00 72 00 61 00 6D 00-46 00 69 00 79 00 05 00 ..r.a.m.F.i.y...

d 401a54的显示如下:

1
2
0023:00401A54 53 00 79 00 6E 00 54 00-61 00 58 00 20 00 32 00 S.y.n.T.a.X. .2.
0023:00401A64 6F 00 6F 00 31 00 00 00-4C 00 00 00 52 00 69 00 o.o.1...L...R.i.

12345678是我们输入的key,所以正确的key是SynTaX 2oo1(注意中间的空格)。

注意:如果你是在破解VB6程序,你应该在断点前加上msvbvm60!。

Comments