能力值:
( LV9,RANK:490 )
|
-
-
2 楼
没看见SEH啊?
难道我被忽悠了?
OpetntO
137259176
|
能力值:
( LV13,RANK:500 )
|
-
-
3 楼
输入你的系列号看了一下.Bad name or serial Number!
断点:
0042DB3B |. E8 E8C6FEFF call 0041A228
堆栈为:
0012F990 0012FA98 指向下一个 SEH 记录的指针
|
能力值:
( LV9,RANK:490 )
|
-
-
4 楼
这个是跟机器码相关的,别人的机子是用不了的
|
能力值:
( LV9,RANK:490 )
|
-
-
5 楼
0042DCB7 |. A1 58F74200 mov eax, dword ptr [42F758]
此处能看到明码,将【42F758】转换成十进制字符就是注册码。
似乎跟SEH没关系。
|
能力值:
( LV13,RANK:500 )
|
-
-
6 楼
我一会在试试看 !
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
0042DB21 |. E8 5E75FDFF call <jmp.&kernel32.GetVolumeInformat>; \GetVolumeInformationA
这里获得硬盘序列号... 跟机器码相关
|
能力值:
( LV13,RANK:500 )
|
-
-
8 楼
昨天好象是输入异常引起的错误!
怎么输都是错的!!
怪怪哦 !
name: kanghtta
ds:[0042F758]=808DD47C
eax=006CBE66, (UNICODE "ate(&U)")
命令行里: ?0x808DD47C
得:2147483647
check bad or serial number! ???? 负数转化成正数错了! ???
|
能力值:
( LV9,RANK:490 )
|
-
-
9 楼
0042DB21 |. E8 5E75FDFF call <jmp.&kernel32.GetVolumeInformat>; \GetVolumeInformationA
你的eax返回多少?
808DD47C(H)->2156778620(D)
|
能力值:
( LV13,RANK:500 )
|
-
-
10 楼
刚才在同学机子上调了会 ! 在他机子上就是对的! 郁闷....害我看了大半夜的书!!
这个函数调用成功返回的是非零值啊?
If all the requested information is retrieved, the return value is nonzero.
If not all the requested information is retrieved, the return value is zero. To get extended error information, call GetLastError.
0042DB21 |. E8 5E75FDFF call <jmp.&kernel32.GetVolumeInformat>; \GetVolumeInformationA
未执行CALL时
EAX: 00D20FD4
执行后: EAX : 00000001
|
能力值:
( LV13,RANK:500 )
|
-
-
11 楼
808DD47C(H)->2156778620(D)
32位有符号数表示的最大范围: -2147483648 (D)到+2147483647(d)<2156778620(D)
不异常就不正常了! 嘿嘿...谢谢petnt , 改天请你吃饭噶!
刚开始还以为是程序的问题! 没想到是我机子的问题!
改天换个硬盘去! 嘿嘿.......
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
0042DCBC |. 3B05 60F74200 cmp eax, dword ptr [42F760]
0042DCC2 |. 75 17 jnz short 0042DCDB
0042DCC4 |. 6A 00 push 0
0042DCC6 |. 66:8B0D 1CDD4>mov cx, word ptr [42DD1C]
0042DCCD |. B2 02 mov dl, 2
0042DCCF |. B8 A0DD4200 mov eax, 0042DDA0 ; good serial, thanks for trying this crackme by niabi !
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
正在学习中,请多关照
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
能写详细点吗?
我有好几个地方不懂...
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
有人搞出来了吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
最小用户名数为6个.任意序列号.找到0042DDE0=echap519.0042DDE0 (ASCII "Bad Name Or Serial Number !!!!!")
向上看,找到0042DCBC |. 3B05 60F74200 CMP EAX,DWORD PTR DS:[42F760]
处下断,F9运行,输入任意大于六位的用户名,任意序列号,check.此时,DS:[0042F760]=00BBDEEC即你的序列号
EAX=C4097998即正确的注册码.
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
^^^^还是没看懂~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
如用户名为:shizong,序列号随便填,在这里下断点。
0042DCAD |. E8 F688FDFF call 004065A8
0042DCB2 |. A3 60F74200 mov dword ptr [42F760], eax
0042DCB7 |. A1 58F74200 mov eax, dword ptr [42F758]
0042DCBC |. 3B05 60F74200 cmp eax, dword ptr [42F760]
此时数据窗口eaX值为1736073180
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
问题是算法..
那堆call是干什么用的,我看里面有加有减的,然后存到同一个地方
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
下来看看```
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
我使用GetWindowsTextW可以断住,但是要跟好多次才出来错误对话窗口
所以直接加载在错误窗口出来的时候暂停,然后在消息循环里面下断点 单击OK 就断到
然后执行到返回几次就可以到了
0042DCDB |> \6A 00 push 0 ; /Arg1 = 00000000
0042DCDD |. 66:8B0D 1CDD4>mov cx, word ptr [42DD1C] ; |
0042DCE4 |. B2 02 mov dl, 2 ; |
0042DCE6 |. B8 E0DD4200 mov eax, 0042DDE0 ; |ASCII "Bad Name Or Serial Number !!!!!"
0042DCEB |. E8 50F1FFFF call 0042CE40 ; \echap519.0042CE40
0042DCF0 |> 33C0 xor eax, eax
这时候也就找到了关键点
当然也可以使用OLLYDBG查找弹出对话框的字符串调用 可以更快捷的找到关键点
我的注册码:
xueren
ds:[0042F760]=069F6BC7;111111111
eax=7623D80C;1982060556
|
|
|