乐者为王

Do one thing, and do it well.

练习破解Brad Soblesky的Crackme

Crackme程序

这次破解参考了wind[CCG]写的《Crackme-Brad Soblesky的Crackme程序破解》文章。因为我用的是Windows 2000操作系统,TRW2000不能在上面使用,所以我用SoftICE 4.05 来破解。

用PEiD查看这个程序,发现是用VC++ 6.0编写的且没加过壳,所以用W32Dasm反汇编。打开Functions/Imports查看它调用的函数,能够看见KERNEL32.lstrcmpA。双击它可以看到如下程序段:

1
2
3
4
5
6
7
8
9
10
11
:00401585 8d4de4 lea ecx, dword ptr [ebp-1c]
:00401588 51 push ecx
:00401589 8d55f4 lea edx, dword ptr [ebp-0c]
:0040158c 52 push edx

* reference to: kernel32.lstrcmpa, ord:02fch
:0040158d ff1500204000 call dword ptr [00402000]
:00401593 85c0 test eax, eax                      -> 典型的判断,肯定是这里了

:00401595 7516 jne 004015ad                       -> 看见这个跳转了吗
:00401597 6a40 push 00000040
  1. 启动SoftICE,然后运行Crackme程序;
  2. 在文本框中输入78787878;
  3. Ctrl+D 来到SoftICE中,输入bpx lstrcmpA,按回车后用Ctrl+D命令返回Crackme;
  4. 按check,程序中断;
  5. 按F11回到调用lstrcmpA的地方,发现CS寄存器的值为001b,输入bpx 001b: 00401585,按回车后用Ctrl+D命令返回Crackme;
  6. 按check,程序中断;
  7. F10来到如下程序段:
1
2
3
4
:00401585 8d4de4 lea ecx, dword ptr [ebp-1c]
:00401588 51 push ecx                             -> 在此处用d ecx就可以看到注册码了
:00401589 8d55f4 lea edx, dword ptr [ebp-0c]
:0040158c 52 push edx

注册码:<BrD-SoB>

Comments