wofan 发表于 2006-10-2 21:44:33

刚下的,再来一个,却还是简单的哟

还是从http://www.crackmes.de/下载Crackme

注册成功,就听到一首歌,并在Edit中显示:valid Serial!

name:
2656461220   =============0x9E5661A4
code:123456   ------------即0x1E240
真注册码:3679971919 ---0xDB57EA4F

0040394B    FF15 4C214300      call dword ptr ds:[<&USER32.GetDlgI>; USER32.GetDlgItemInt
00403951    A3 E8574400      mov dword ptr ds:,eax       ; 假注册码的十六进制形式:1E240
00403956    68 40420F00      push 0F4240
0040395B    6A 64            push 64
0040395D    E8 FEFDFFFF      call Keygenme.00403760            ; 关键Call,F7跟进
00403962    83C4 08            add esp,8
00403965    A3 FC574400      mov dword ptr ds:,eax       ; 假注册码:1E240
0040396A    8B15 E8574400      mov edx,dword ptr ds:       ; 真注册码:DB57EA4F
00403970    3B15 EC574400      cmp edx,dword ptr ds:       ; 比较
00403976    74 16            je short Keygenme.0040398E
00403978    68 9C2A4300      push Keygenme.00432A9C            ; ASCII "Wrong Serial!"


跟踪发现,软件在按确认按钮之前,就写入了真正的注册码!
于是:
OD载入,对004457EC下内存写入断点,F9运行,断下。

00403810    55               push ebp-------------在这里重新下断,看它怎么算出要写入的数据。
00403811    8BEC               mov ebp,esp
00403813    83EC 3C            sub esp,3C
00403816    833D E4574400 00   cmp dword ptr ds:,0
0040381D    75 35            jnz short Keygenme.00403854
0040381F    C705 E4574400 0100>mov dword ptr ds:,1
00403829    A1 04584400      mov eax,dword ptr ds:       ; 系统自动生成的注册名ID的16进制形式
/////////////////////////////////////////////////////////////////
ds:=9E5661A4---------程序生成的注册ID 的16进制形式
/////////////////////////////////////////////////////////////////
00403829    A1 04584400      mov eax,dword ptr ds:      
0040382E    6BC0 03            imul eax,eax,3                      ; 乘3
00403831    A3 04584400      mov dword ptr ds:,eax       ; 保存:DB0324EC
00403836    8B0D 04584400      mov ecx,dword ptr ds:
0040383C    81C1 63C55400      add ecx,54C563                      ; 加上0x54C563
00403842    890D 04584400      mov dword ptr ds:,ecx       ; 保存:DB57EA4F
00403848    8B15 04584400      mov edx,dword ptr ds:
0040384E    8915 EC574400      mov dword ptr ds:,edx---------断在这儿

=============================================================
通过内存断点大法,可以找到:根据C 盘序列号算出的注册ID号过程在这里:
004312E1    8BEC               mov ebp,esp
004312E3    E8 081AFDFF      call Keygenme.00402CF0
004312E8    0FAF05 FC574400    imul eax,dword ptr ds:
004312EF    A3 F8574400      mov dword ptr ds:,eax
004312F4    5D               pop ebp
004312F5    C3               retn
============================================================


靠,依旧简单!
ID * 3 + 0x54C563就是注册码。


21:25 2006-10-2
by wofan

obi-one 发表于 2006-10-3 13:04:34

强,学习的榜样!
页: [1]
查看完整版本: 刚下的,再来一个,却还是简单的哟