月之精灵 发表于 2006-11-30 11:56:59

一个CRACKME的问题。

一个爆破练习的CRACKME(CRKME4)。根据字符串提示,在0042DCC2 这里设断。F9,输入“yinguilin”和“1234567890”点Check。我们来到了这里:

0042DCB7   |.A1 58F74200      mov eax,dword ptr ds:
0042DCBC   |.3B05 60F74200    cmp eax,dword ptr ds:
0042DCC2   |.75 17            jnz short CRKME4.0042DCDB
0042DCC4   |.6A 00            push 0                           ; /Arg1 = 00000000
0042DCC6   |.66:8B0D 1CDD4200 mov cx,word ptr ds:      ; |
0042DCCD   |.B2 02            mov dl,2                         ; |
0042DCCF   |.B8 A0DD4200      mov eax,CRKME4.0042DDA0          ; |ASCII "Good Serial, Thanks For trying this Crackme bY nIabI !"
0042DCD4   |.E8 67F1FFFF      call CRKME4.0042CE40             ; \CRKME4.0042CE40
0042DCD9   |.EB 15            jmp short CRKME4.0042DCF0
0042DCDB   |>6A 00            push 0                           ; /Arg1 = 00000000
0042DCDD   |.66:8B0D 1CDD4200 mov cx,word ptr ds:      ; |
0042DCE4   |.B2 02            mov dl,2                         ; |
0042DCE6   |.B8 E0DD4200      mov eax,CRKME4.0042DDE0          ; |ASCII "Bad Name Or Serial Number !!!!!"
0042DCEB   |.E8 50F1FFFF      call CRKME4.0042CE40             ; \CRKME4.0042CE40

0042DCC2是个关键跳。75改74后爆破成功。我们先看此时的寄存器:

EAX E4EDC454
ECX 0012F988
EDX 00000000
EBX 00D22218
ESP 0012F990
EBP 0012F9B0
ESI 0042F75C CRKME4.0042F75C
EDI 0042F764 CRKME4.0042F764
EIP 0042DCC2 CRKME4.0042DCC2
C 0ES 0023 32bit 0(FFFFFFFF)
P 1CS 001B 32bit 0(FFFFFFFF)
A 0SS 0023 32bit 0(FFFFFFFF)
Z 0DS 0023 32bit 0(FFFFFFFF)
S 1FS 003B 32bit 7FFDF000(FFF)
T 0GS 0000 NULL
D 0
O 0LastErr ERROR_SUCCESS (00000000)
EFL 00000286 (NO,NB,NE,A,S,PE,L,LE)
ST0 empty -UNORM E688 00000000 8089442C
ST1 empty +UNORM 0049 0000004A E1279838
ST2 empty -1.4557146359015119360e-881
ST3 empty -2.3446090995181465600e-1734
ST4 empty 0.0000000000002159420e-4933
ST5 empty +UNORM 4FBC 00006770 8088FCE3
ST6 empty 1.0000000000000000000
ST7 empty 1.0000000000000000000
               3 2 1 0      E S P U O Z D I
FST 4020Cond 1 0 0 0Err 0 0 1 0 0 0 0 0(EQ)
FCW 1372Prec NEAR,64Mask    1 1 0 0 1 0

现在的问题是我想追出它的注册码。可是在0042DCBC这里的比较。此时的寄存器EAX是E4EDC454换算成十进制的值是“3840787540”,用这个码注册却不成功。
请高手看看这个程序,问题出在什么地方。

http://yinguilin968.gbaopan.com/MyFiles.aspx

[ 本帖最后由 月之精灵 于 2006-11-30 11:58 编辑 ]

hrbx 发表于 2006-11-30 12:26:08

供参考:
Name:aaaaaa
Serial:935410268

程序开始对用户名除满足大于等于6位以外,没有限制。
用户名经过简单运算得出注册码。
程序对注册码有限制,必须是整型,所以并非任何用户名都可注册成功,有一定的限制。

月之精灵 发表于 2006-11-30 12:57:18

回复 #2 hrbx 的帖子

我这里不行啊

[ 本帖最后由 月之精灵 于 2006-11-30 13:01 编辑 ]

jiegou 发表于 2006-11-30 14:58:02

汇编不是很懂,所以不知道算法是如何计算的。惭愧。。。爆破就是修改一点就可以了。

极速暴龙 发表于 2006-11-30 16:39:19

楼主的注册码应该是 -454179756

long int 范围 -2147483648~2147483647 即 -2^31~2^31-1

月之精灵 发表于 2006-11-30 17:36:48

正确,请问能说一下过程吗?

极速暴龙 发表于 2006-11-30 17:44:12

我也不知道过程.

E4EDC454 H= -454179756 D

应该是补码的关系

你在计算器里十进制输入 -454179756 然后点十六进制就看到了

好像取了硬盘ID

[ 本帖最后由 极速暴龙 于 2006-11-30 17:47 编辑 ]

月之精灵 发表于 2006-11-30 20:47:43

回复 #7 极速暴龙 的帖子

提示非法

极速暴龙 发表于 2006-11-30 20:52:44

汗怎么可能

偶是菜鸟这个Crackme是不是很多花指令:Q :Q :Q

hrbx 发表于 2006-11-30 21:50:26

没细看,估计参考运算的不只用户名,好像还有硬盘序列号或卷标号。:L
比较简单,找到暴破的地方,向上不远处就是整个算法开始的地方了。
有兴趣慢慢跟吧,较早的一个CrackMe,不太难的。

[ 本帖最后由 hrbx 于 2006-11-30 21:52 编辑 ]
页: [1] 2
查看完整版本: 一个CRACKME的问题。