首页
社区
课程
招聘
[原创]我的crackme8,这个更简单
发表于: 2009-2-19 16:22 9794

[原创]我的crackme8,这个更简单

2009-2-19 16:22
9794
近来看到这个版面人气不太高.

花15分钟时间编写一个 真正对新手练习的小游戏  crackme

纯算法的

高手可以无视之.特别是对于ccfer , 估计也就是20分钟的事

给出注册码即可   当然这个就算制作注册机也不是很难.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (25)
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
2
抢 到 沙 发 先

对此Crack Me仅保持关注
2009-2-19 16:44
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
3
拉格朗日1234
2009-2-19 17:09
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
4
太难了,看ccfer表演
2009-2-19 17:15
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
pediy
11EBB9D-0513ACC-0480DB0-027B1F4
2009-2-19 17:26
0
雪    币: 358
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
膜拜 拉格朗日.....
2009-2-19 17:26
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
7
这次出手慢了,被拉格朗日抢先了
2009-2-19 17:27
0
雪    币: 926
活跃值: (397)
能力值: (RANK:500 )
在线值:
发帖
回帖
粉丝
8
你就是拉格朗日吧  
2009-2-19 17:28
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
9
我不是拉格朗日
我做crackme从来不用马甲
2009-2-19 17:32
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
老衲不是一个人 不是一个人
2009-2-19 17:35
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
11
为什么只用了一个引理啊
等式的另一边直接从用户名hash取值才有意思
2009-2-19 17:37
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
12
这个方程怎么解啊?
2009-2-19 17:42
0
雪    币: 926
活跃值: (397)
能力值: (RANK:500 )
在线值:
发帖
回帖
粉丝
13
你是说这样就容易看出来吧

不过无所谓 ,知道的话,无论怎么写都能看出来.比如你

不过这公式是欧拉 花了好几年研究出来的

拉格朗日只是去证明,证明的时候还引用了欧拉的结果.
2009-2-19 17:43
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
14
贴个相关的资料,有兴趣的可以看看
http://www.changhai.org/articles/science/mathematics/four_square_theorem.php
2009-2-19 17:56
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
15
petnt
121D055-0952344-0139457-03CE2BA

感谢ccfer! 感谢拉格朗日!感谢humourkyo! 感谢Lagrange! 感谢Euler!
2009-2-19 19:25
0
雪    币: 347
活跃值: (30)
能力值: ( LV9,RANK:420 )
在线值:
发帖
回帖
粉丝
16
楼主写的所有Crack Me我没有一个能看懂的
2009-2-19 20:09
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
功力不够, 没看明白。

能将注册算法贴出来吗?
我想看看LZ是如何利用拉格朗日定理的
2009-2-28 03:54
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
看不懂啊是真的 不过我想问个问题
2009-3-3 16:41
0
雪    币: 424
活跃值: (10)
能力值: ( LV9,RANK:850 )
在线值:
发帖
回帖
粉丝
19
dCAi
0AF06EE-08654BB-0A5F330-0176026
膜拜 拉格fer
2009-3-3 18:49
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
20
  强大的拉格朗!!日!
  我用bwns做用户名不行……(原来是是算成负数了,得再求补,呵呵)
  出现后两位长度为8的情况,晕!,将小写转大写,计算成功(注册码不分大小写)
  最后,给出一个注册机,嘿嘿!这个CM验证不大严密,不输用户名都能行,神奇的MD5,神奇的拉格朗fer,
上传的附件:
2009-3-3 22:15
0
雪    币: 362
活跃值: (25)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
21
现在发现,数学真的很重要。不然即使算法摆在那里依然看不懂原理。数学早忘完了,这个定理没印象
2009-3-4 10:44
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
请教,该程序应该如何下断,哪位大哥能说下应该如何追出注册码吗。应该对哪个函数下断
2009-3-4 20:01
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
请问,这个程序能通过消息下断吗,但在OD中的查看菜单中的窗口下并没有看到任何东东呀
2009-3-4 20:07
0
雪    币: 136
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
24
大概分析如下,如有不对之处请大牛指正
004014D0  /$  83EC 0C       sub     esp, 0C
004014D3  |.  53            push    ebx
004014D4  |.  55            push    ebp
004014D5  |.  56            push    esi
004014D6  |.  57            push    edi
004014D7  |.  8B7C24 20     mov     edi, dword ptr [esp+20]          ;  传入的三个字符参数放入EDI
004014DB  |.  83C9 FF       or      ecx, FFFFFFFF
004014DE  |.  33C0          xor     eax, eax                         ;  清零
004014E0  |.  33D2          xor     edx, edx
004014E2  |.  F2:AE         repne   scas byte ptr es:[edi]           ;  MD5(&A)
004014E4  |.  F7D1          not     ecx
004014E6  |.  49            dec     ecx
004014E7  |.  33F6          xor     esi, esi
004014E9  |.  8BE9          mov     ebp, ecx
004014EB  |.  33FF          xor     edi, edi
004014ED  |.  33DB          xor     ebx, ebx
004014EF  |.  3BEA          cmp     ebp, edx
004014F1  |.  895424 14     mov     dword ptr [esp+14], edx
004014F5  |.  895424 18     mov     dword ptr [esp+18], edx
004014F9  |.  0F8E 90000000 jle     0040158F
004014FF  |.  8D45 FF       lea     eax, dword ptr [ebp-1]
00401502  |.  894424 10     mov     dword ptr [esp+10], eax
00401506  |>  8B4C24 20     /mov     ecx, dword ptr [esp+20]
0040150A  |.  8A040B        |mov     al, byte ptr [ebx+ecx]
0040150D  |.  3C 2F         |cmp     al, 2F
0040150F  |.  7E 0C         |jle     short 0040151D
00401511  |.  3C 3A         |cmp     al, 3A
00401513  |.  7D 08         |jge     short 0040151D
00401515  |.  0FBEC0        |movsx   eax, al
00401518  |.  83E8 30       |sub     eax, 30
0040151B  |.  EB 1E         |jmp     short 0040153B
0040151D  |>  3C 40         |cmp     al, 40
0040151F  |.  7E 0C         |jle     short 0040152D
00401521  |.  3C 47         |cmp     al, 47
00401523  |.  7D 08         |jge     short 0040152D
00401525  |.  0FBEC0        |movsx   eax, al
00401528  |.  83E8 37       |sub     eax, 37
0040152B  |.  EB 0E         |jmp     short 0040153B
0040152D  |>  3C 60         |cmp     al, 60
0040152F  |.  7E 0F         |jle     short 00401540
00401531  |.  3C 67         |cmp     al, 67
00401533  |.  7D 0B         |jge     short 00401540
00401535  |.  0FBEC0        |movsx   eax, al
00401538  |.  83E8 57       |sub     eax, 57
0040153B  |>  99            |cdq
0040153C  |.  8BF0          |mov     esi, eax
0040153E  |.  8BFA          |mov     edi, edx
00401540  |>  DD05 30354000 |fld     qword ptr [403530]
00401546  |.  DB4424 10     |fild    dword ptr [esp+10]
0040154A  |.  E8 5B0B0000   |call    <jmp.&MSVCRT._CIpow>
0040154F  |.  E8 500B0000   |call    <jmp.&MSVCRT._ftol>
00401554  |.  57            |push    edi
00401555  |.  56            |push    esi
00401556  |.  52            |push    edx
00401557  |.  50            |push    eax
00401558  |.  E8 130B0000   |call    00402070
0040155D  |.  8B4C24 14     |mov     ecx, dword ptr [esp+14]
00401561  |.  03C8          |add     ecx, eax
00401563  |.  8B4424 18     |mov     eax, dword ptr [esp+18]
00401567  |.  894C24 14     |mov     dword ptr [esp+14], ecx
0040156B  |.  8B4C24 10     |mov     ecx, dword ptr [esp+10]
0040156F  |.  13C2          |adc     eax, edx
00401571  |.  43            |inc     ebx
00401572  |.  49            |dec     ecx
00401573  |.  3BDD          |cmp     ebx, ebp
00401575  |.  894424 18     |mov     dword ptr [esp+18], eax
00401579  |.  894C24 10     |mov     dword ptr [esp+10], ecx
0040157D  |.^ 7C 87         \jl      short 00401506
0040157F  |.  8B4424 14     mov     eax, dword ptr [esp+14]
00401583  |.  8B5424 18     mov     edx, dword ptr [esp+18]
00401587  |.  5F            pop     edi
00401588  |.  5E            pop     esi
00401589  |.  5D            pop     ebp
0040158A  |.  5B            pop     ebx
0040158B  |.  83C4 0C       add     esp, 0C
0040158E  |.  C3            retn
0040158F  |>  5F            pop     edi
00401590  |.  5E            pop     esi
00401591  |.  8BC2          mov     eax, edx
00401593  |.  8B5424 10     mov     edx, dword ptr [esp+10]
00401597  |.  5D            pop     ebp
00401598  |.  5B            pop     ebx
00401599  |.  83C4 0C       add     esp, 0C
0040159C  \.  C3            retn
0040159D      90            nop
0040159E      90            nop
0040159F      90            nop
004015A0   .  6A FF         push    -1                               ;  这里是CHECK入口
004015A2   .  68 1E2B4000   push    00402B1E                         ;  SE 处理程序安装
004015A7   .  64:A1 0000000>mov     eax, dword ptr fs:[0]
004015AD   .  50            push    eax
004015AE   .  64:8925 00000>mov     dword ptr fs:[0], esp            ;  保护函数返回现场
004015B5   .  81EC B4010000 sub     esp, 1B4                         ;  分配局部变量空间
004015BB   .  53            push    ebx
004015BC   .  55            push    ebp
004015BD   .  56            push    esi
004015BE   .  8BD1          mov     edx, ecx
004015C0   .  57            push    edi
004015C1   .  B9 0C000000   mov     ecx, 0C                          ;  ECX赋值 0C
004015C6   .  33C0          xor     eax, eax                         ;  EAX清零
004015C8   .  8DBC24 2D0100>lea     edi, dword ptr [esp+12D]
004015CF   .  C68424 2C0100>mov     byte ptr [esp+12C], 0
004015D7   .  C68424 600100>mov     byte ptr [esp+160], 0
004015DF   .  F3:AB         rep     stos dword ptr es:[edi]          ;  区域清零,初步认为存放用户名
004015E1   .  AA            stos    byte ptr es:[edi]
004015E2   .  B9 18000000   mov     ecx, 18
004015E7   .  33C0          xor     eax, eax
004015E9   .  8DBC24 610100>lea     edi, dword ptr [esp+161]
004015F0   .  C68424 E40000>mov     byte ptr [esp+E4], 0
004015F8   .  F3:AB         rep     stos dword ptr es:[edi]          ;  对区域24个DWORD地址清零
004015FA   .  66:AB         stos    word ptr es:[edi]
004015FC   .  AA            stos    byte ptr es:[edi]
004015FD   .  B9 11000000   mov     ecx, 11
00401602   .  33C0          xor     eax, eax
00401604   .  8DBC24 E50000>lea     edi, dword ptr [esp+E5]
0040160B   .  6A 33         push    33
0040160D   .  F3:AB         rep     stos dword ptr es:[edi]
0040160F   .  AA            stos    byte ptr es:[edi]
00401610   .  8D8424 300100>lea     eax, dword ptr [esp+130]         ;  这里也是对分配的栈区域清零
00401617   .  8BCA          mov     ecx, edx
00401619   .  50            push    eax                              ;  用户名字符串变量缓冲入栈
0040161A   .  68 E8030000   push    3E8                              ;  用户名编辑框ID
0040161F   .  895424 74     mov     dword ptr [esp+74], edx
00401623   .  E8 F8090000   call    <jmp.&MFC42.#CWnd::GetDlgItemTex>;  调用GETDLGITEMTEXT
00401628   .  E8 FB110000   call    00402828
0040162D   .  8DBC24 2C0100>lea     edi, dword ptr [esp+12C]         ;  这里取得用户名
00401634   .  83C9 FF       or      ecx, FFFFFFFF
00401637   .  33C0          xor     eax, eax                         ;  EAX清零
00401639   .  F2:AE         repne   scas byte ptr es:[edi]           ;  存入ES段
0040163B   .  F7D1          not     ecx                              ;  长度
0040163D   .  49            dec     ecx                              ;  用户名长度
0040163E   .  51            push    ecx                              ;  入栈
0040163F   .  8D8C24 300100>lea     ecx, dword ptr [esp+130]         ;  用户名字符串首地址给ECX
00401646   .  51            push    ecx                              ;  参数入栈
00401647   .  E8 1C120000   call    00402868                         ;  处理用户名 404184
0040164C   .  E8 77120000   call    004028C8
00401651   .  8B10          mov     edx, dword ptr [eax]             ;  这里看样子是根据前面用户名的暗码为下面CALL准备参数
00401653   .  899424 E40000>mov     dword ptr [esp+E4], edx
0040165A   .  8B48 04       mov     ecx, dword ptr [eax+4]
0040165D   .  898C24 E80000>mov     dword ptr [esp+E8], ecx
00401664   .  8B50 08       mov     edx, dword ptr [eax+8]
00401667   .  8D8C24 600100>lea     ecx, dword ptr [esp+160]
0040166E   .  899424 EC0000>mov     dword ptr [esp+EC], edx
00401675   .  8B40 0C       mov     eax, dword ptr [eax+C]
00401678   .  51            push    ecx
00401679   .  8D9424 E80000>lea     edx, dword ptr [esp+E8]
00401680   .  6A 10         push    10
00401682   .  52            push    edx
00401683   .  898424 FC0000>mov     dword ptr [esp+FC], eax
0040168A   .  E8 F1FDFFFF   call    00401480                         ;  根据用户名生成了32位ASCII
0040168F   .  83C4 0C       add     esp, 0C                          ;  栈平衡
00401692   .  8D4C24 14     lea     ecx, dword ptr [esp+14]
00401696   .  E8 4F090000   call    <jmp.&MFC42.#CString::CString_54>
0040169B   .  8D8424 600100>lea     eax, dword ptr [esp+160]         ;  假注册码的首地址给EAX
004016A2   .  8D4C24 14     lea     ecx, dword ptr [esp+14]
004016A6   .  50            push    eax                              ;  参数入栈
004016A7   .  C78424 D00100>mov     dword ptr [esp+1D0], 0
004016B2   .  E8 63090000   call    <jmp.&MFC42.#CString::operator=_>
004016B7   .  8D4C24 24     lea     ecx, dword ptr [esp+24]
004016BB   .  E8 2A090000   call    <jmp.&MFC42.#CString::CString_54>
004016C0   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
004016C4   .  C68424 CC0100>mov     byte ptr [esp+1CC], 1
004016CC   .  E8 19090000   call    <jmp.&MFC42.#CString::CString_54>
004016D1   .  8D4C24 2C     lea     ecx, dword ptr [esp+2C]
004016D5   .  C68424 CC0100>mov     byte ptr [esp+1CC], 2
004016DD   .  E8 08090000   call    <jmp.&MFC42.#CString::CString_54>
004016E2   .  8D4C24 18     lea     ecx, dword ptr [esp+18]
004016E6   .  C68424 CC0100>mov     byte ptr [esp+1CC], 3
004016EE   .  E8 F7080000   call    <jmp.&MFC42.#CString::CString_54>
004016F3   .  8D4C24 28     lea     ecx, dword ptr [esp+28]
004016F7   .  C68424 CC0100>mov     byte ptr [esp+1CC], 4
004016FF   .  E8 E6080000   call    <jmp.&MFC42.#CString::CString_54>
00401704   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
00401708   .  C68424 CC0100>mov     byte ptr [esp+1CC], 5
00401710   .  E8 D5080000   call    <jmp.&MFC42.#CString::CString_54>
00401715   .  8D4C24 30     lea     ecx, dword ptr [esp+30]
00401719   .  C68424 CC0100>mov     byte ptr [esp+1CC], 6
00401721   .  E8 C4080000   call    <jmp.&MFC42.#CString::CString_54>
00401726   .  8D4C24 34     lea     ecx, dword ptr [esp+34]
0040172A   .  C68424 CC0100>mov     byte ptr [esp+1CC], 7
00401732   .  E8 B3080000   call    <jmp.&MFC42.#CString::CString_54>
00401737   .  6A 03         push    3                                ;  下面是假注册码"6959A6B452907B73B39E7529521EFA84"分3个字符3个字符的分开
00401739   .  8D4C24 14     lea     ecx, dword ptr [esp+14]
0040173D   .  6A 00         push    0
0040173F   .  B3 08         mov     bl, 8
00401741   .  51            push    ecx
00401742   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
00401746   .  889C24 D80100>mov     byte ptr [esp+1D8], bl
0040174D   .  E8 C2080000   call    <jmp.&MFC42.#CString::Mid_4278>
00401752   .  50            push    eax
00401753   .  8D4C24 28     lea     ecx, dword ptr [esp+28]
00401757   .  C68424 D00100>mov     byte ptr [esp+1D0], 9
0040175F   .  E8 AA080000   call    <jmp.&MFC42.#CString::operator=_>
00401764   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
00401768   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
0040176F   .  E8 6A080000   call    <jmp.&MFC42.#CString::~CString_8>
00401774   .  6A 03         push    3
00401776   .  8D5424 14     lea     edx, dword ptr [esp+14]
0040177A   .  6A 03         push    3
0040177C   .  52            push    edx
0040177D   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
00401781   .  E8 8E080000   call    <jmp.&MFC42.#CString::Mid_4278>
00401786   .  50            push    eax
00401787   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
0040178B   .  C68424 D00100>mov     byte ptr [esp+1D0], 0A
00401793   .  E8 76080000   call    <jmp.&MFC42.#CString::operator=_>
00401798   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
0040179C   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
004017A3   .  E8 36080000   call    <jmp.&MFC42.#CString::~CString_8>
004017A8   .  6A 03         push    3
004017AA   .  8D4424 14     lea     eax, dword ptr [esp+14]
004017AE   .  6A 06         push    6
004017B0   .  50            push    eax
004017B1   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
004017B5   .  E8 5A080000   call    <jmp.&MFC42.#CString::Mid_4278>
004017BA   .  50            push    eax
004017BB   .  8D4C24 30     lea     ecx, dword ptr [esp+30]
004017BF   .  C68424 D00100>mov     byte ptr [esp+1D0], 0B
004017C7   .  E8 42080000   call    <jmp.&MFC42.#CString::operator=_>
004017CC   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
004017D0   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
004017D7   .  E8 02080000   call    <jmp.&MFC42.#CString::~CString_8>
004017DC   .  6A 03         push    3
004017DE   .  8D4C24 14     lea     ecx, dword ptr [esp+14]
004017E2   .  6A 09         push    9
004017E4   .  51            push    ecx
004017E5   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
004017E9   .  E8 26080000   call    <jmp.&MFC42.#CString::Mid_4278>
004017EE   .  50            push    eax
004017EF   .  8D4C24 1C     lea     ecx, dword ptr [esp+1C]
004017F3   .  C68424 D00100>mov     byte ptr [esp+1D0], 0C
004017FB   .  E8 0E080000   call    <jmp.&MFC42.#CString::operator=_>
00401800   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
00401804   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
0040180B   .  E8 CE070000   call    <jmp.&MFC42.#CString::~CString_8>
00401810   .  6A 03         push    3
00401812   .  8D5424 14     lea     edx, dword ptr [esp+14]
00401816   .  6A 0C         push    0C
00401818   .  52            push    edx
00401819   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
0040181D   .  E8 F2070000   call    <jmp.&MFC42.#CString::Mid_4278>
00401822   .  50            push    eax
00401823   .  8D4C24 2C     lea     ecx, dword ptr [esp+2C]
00401827   .  C68424 D00100>mov     byte ptr [esp+1D0], 0D
0040182F   .  E8 DA070000   call    <jmp.&MFC42.#CString::operator=_>
00401834   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
00401838   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
0040183F   .  E8 9A070000   call    <jmp.&MFC42.#CString::~CString_8>
00401844   .  6A 03         push    3
00401846   .  8D4424 14     lea     eax, dword ptr [esp+14]
0040184A   .  6A 0F         push    0F
0040184C   .  50            push    eax
0040184D   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
00401851   .  E8 BE070000   call    <jmp.&MFC42.#CString::Mid_4278>
00401856   .  50            push    eax
00401857   .  8D4C24 24     lea     ecx, dword ptr [esp+24]
0040185B   .  C68424 D00100>mov     byte ptr [esp+1D0], 0E
00401863   .  E8 A6070000   call    <jmp.&MFC42.#CString::operator=_>
00401868   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
0040186C   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
00401873   .  E8 66070000   call    <jmp.&MFC42.#CString::~CString_8>
00401878   .  6A 03         push    3
0040187A   .  8D4C24 14     lea     ecx, dword ptr [esp+14]
0040187E   .  6A 12         push    12
00401880   .  51            push    ecx
00401881   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
00401885   .  E8 8A070000   call    <jmp.&MFC42.#CString::Mid_4278>
0040188A   .  50            push    eax
0040188B   .  8D4C24 34     lea     ecx, dword ptr [esp+34]
0040188F   .  C68424 D00100>mov     byte ptr [esp+1D0], 0F
00401897   .  E8 72070000   call    <jmp.&MFC42.#CString::operator=_>
0040189C   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
004018A0   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
004018A7   .  E8 32070000   call    <jmp.&MFC42.#CString::~CString_8>
004018AC   .  6A 03         push    3
004018AE   .  8D5424 14     lea     edx, dword ptr [esp+14]
004018B2   .  6A 15         push    15
004018B4   .  52            push    edx
004018B5   .  8D4C24 20     lea     ecx, dword ptr [esp+20]
004018B9   .  E8 56070000   call    <jmp.&MFC42.#CString::Mid_4278>
004018BE   .  50            push    eax
004018BF   .  8D4C24 38     lea     ecx, dword ptr [esp+38]
004018C3   .  C68424 D00100>mov     byte ptr [esp+1D0], 10
004018CB   .  E8 3E070000   call    <jmp.&MFC42.#CString::operator=_>
004018D0   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
004018D4   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
004018DB   .  E8 FE060000   call    <jmp.&MFC42.#CString::~CString_8>
004018E0   .  8B4424 24     mov     eax, dword ptr [esp+24]
004018E4   .  50            push    eax                              ;  以下对上面每组三字符进行MD5处理
004018E5   .  E8 E6FBFFFF   call    004014D0
004018EA   .  8B4C24 20     mov     ecx, dword ptr [esp+20]
004018EE   .  8BF0          mov     esi, eax
004018F0   .  51            push    ecx
004018F1   .  8BFA          mov     edi, edx
004018F3   .  E8 D8FBFFFF   call    004014D0
004018F8   .  895424 7C     mov     dword ptr [esp+7C], edx
004018FC   .  8B5424 34     mov     edx, dword ptr [esp+34]
00401900   .  52            push    edx
00401901   .  894424 7C     mov     dword ptr [esp+7C], eax
00401905   .  E8 C6FBFFFF   call    004014D0
0040190A   .  8BD8          mov     ebx, eax
0040190C   .  8B4424 24     mov     eax, dword ptr [esp+24]
00401910   .  50            push    eax
00401911   .  8BEA          mov     ebp, edx
00401913   .  E8 B8FBFFFF   call    004014D0
00401918   .  8B4C24 38     mov     ecx, dword ptr [esp+38]
0040191C   .  894424 48     mov     dword ptr [esp+48], eax
00401920   .  51            push    ecx
00401921   .  895424 50     mov     dword ptr [esp+50], edx
00401925   .  E8 A6FBFFFF   call    004014D0
0040192A   .  895424 78     mov     dword ptr [esp+78], edx
0040192E   .  8B5424 34     mov     edx, dword ptr [esp+34]
00401932   .  52            push    edx
00401933   .  894424 78     mov     dword ptr [esp+78], eax
00401937   .  E8 94FBFFFF   call    004014D0
0040193C   .  894424 6C     mov     dword ptr [esp+6C], eax
00401940   .  8B4424 48     mov     eax, dword ptr [esp+48]
00401944   .  895424 70     mov     dword ptr [esp+70], edx
00401948   .  50            push    eax
00401949   .  E8 82FBFFFF   call    004014D0
0040194E   .  8B4C24 50     mov     ecx, dword ptr [esp+50]
00401952   .  894424 64     mov     dword ptr [esp+64], eax
00401956   .  51            push    ecx
00401957   .  895424 6C     mov     dword ptr [esp+6C], edx
0040195B   .  E8 70FBFFFF   call    004014D0
00401960   .  8B4C24 5C     mov     ecx, dword ptr [esp+5C]
00401964   .  83C4 20       add     esp, 20                          ;  栈平衡
00401967   .  894424 78     mov     dword ptr [esp+78], eax
0040196B   .  8B4424 38     mov     eax, dword ptr [esp+38]          ;  这里对前面每三组字符 ,分别从每4组向前处理
0040196F   .  51            push    ecx
00401970   .  50            push    eax
00401971   .  51            push    ecx
00401972   .  50            push    eax
00401973   .  899424 8C0000>mov     dword ptr [esp+8C], edx
0040197A   .  E8 F1060000   call    00402070
0040197F   .  55            push    ebp
00401980   .  53            push    ebx
00401981   .  8BC8          mov     ecx, eax
00401983   .  55            push    ebp
00401984   .  53            push    ebx
00401985   .  8BD9          mov     ebx, ecx
00401987   .  8BEA          mov     ebp, edx
00401989   .  E8 E2060000   call    00402070
0040198E   .  8B4C24 74     mov     ecx, dword ptr [esp+74]
00401992   .  03D8          add     ebx, eax
00401994   .  8B4424 70     mov     eax, dword ptr [esp+70]
00401998   .  51            push    ecx
00401999   .  50            push    eax
0040199A   .  51            push    ecx
0040199B   .  50            push    eax
0040199C   .  13EA          adc     ebp, edx
0040199E   .  E8 CD060000   call    00402070
004019A3   .  57            push    edi
004019A4   .  56            push    esi
004019A5   .  03D8          add     ebx, eax
004019A7   .  57            push    edi
004019A8   .  56            push    esi
004019A9   .  13EA          adc     ebp, edx
004019AB   .  E8 C0060000   call    00402070
004019B0   .  8B4C24 7C     mov     ecx, dword ptr [esp+7C]
004019B4   .  03D8          add     ebx, eax
004019B6   .  8B4424 78     mov     eax, dword ptr [esp+78]
004019BA   .  51            push    ecx
004019BB   .  50            push    eax
004019BC   .  51            push    ecx
004019BD   .  50            push    eax
004019BE   .  13EA          adc     ebp, edx
004019C0   .  E8 AB060000   call    00402070
004019C5   .  8B4C24 4C     mov     ecx, dword ptr [esp+4C]
004019C9   .  8BF0          mov     esi, eax
004019CB   .  8B4424 48     mov     eax, dword ptr [esp+48]
004019CF   .  51            push    ecx
004019D0   .  50            push    eax
004019D1   .  51            push    ecx
004019D2   .  50            push    eax
004019D3   .  8BFA          mov     edi, edx
004019D5   .  E8 96060000   call    00402070
004019DA   .  8B4C24 58     mov     ecx, dword ptr [esp+58]
004019DE   .  03F0          add     esi, eax
004019E0   .  8B4424 54     mov     eax, dword ptr [esp+54]
004019E4   .  51            push    ecx
004019E5   .  50            push    eax
004019E6   .  51            push    ecx
004019E7   .  50            push    eax
004019E8   .  13FA          adc     edi, edx
004019EA   .  E8 81060000   call    00402070
004019EF   .  8B4C24 64     mov     ecx, dword ptr [esp+64]
004019F3   .  03F0          add     esi, eax
004019F5   .  8B4424 60     mov     eax, dword ptr [esp+60]
004019F9   .  51            push    ecx
004019FA   .  50            push    eax
004019FB   .  51            push    ecx
004019FC   .  50            push    eax
004019FD   .  13FA          adc     edi, edx
004019FF   .  E8 6C060000   call    00402070
00401A04   .  03F0          add     esi, eax
00401A06   .  13FA          adc     edi, edx
00401A08   .  57            push    edi
00401A09   .  56            push    esi
00401A0A   .  55            push    ebp
00401A0B   .  53            push    ebx
00401A0C   .  E8 5F060000   call    00402070
00401A11   .  894424 48     mov     dword ptr [esp+48], eax
00401A15   .  B9 18000000   mov     ecx, 18                          ;  ECX =18
00401A1A   .  33C0          xor     eax, eax                         ;  清零局部缓冲,准备存储用户输入的注册码
00401A1C   .  8DBC24 810000>lea     edi, dword ptr [esp+81]
00401A23   .  C68424 800000>mov     byte ptr [esp+80], 0
00401A2B   .  895424 4C     mov     dword ptr [esp+4C], edx
00401A2F   .  F3:AB         rep     stos dword ptr es:[edi]
00401A31   .  8B4C24 68     mov     ecx, dword ptr [esp+68]
00401A35   .  8D9424 800000>lea     edx, dword ptr [esp+80]
00401A3C   .  66:AB         stos    word ptr es:[edi]
00401A3E   .  6A 65         push    65                               ;  这里位GETDLGITEMTEXTA准备参数
00401A40   .  52            push    edx
00401A41   .  68 E9030000   push    3E9
00401A46   .  AA            stos    byte ptr es:[edi]
00401A47   .  E8 D4050000   call    <jmp.&MFC42.#CWnd::GetDlgItemTex>
00401A4C   .  8B3D CC314000 mov     edi, dword ptr [<&MSVCRT.isxdigi>;  判断是否是十六进制
00401A52   .  33F6          xor     esi, esi
00401A54   >  0FBE8434 8000>movsx   eax, byte ptr [esp+esi+80]
00401A5C   .  50            push    eax                              ;  每7位7位的判断,取四组
00401A5D   .  FFD7          call    edi                              ;  判断是否是十六进制
00401A5F   .  83C4 04       add     esp, 4
00401A62   .  85C0          test    eax, eax
00401A64   .  0F84 CC020000 je      00401D36
00401A6A   .  46            inc     esi
00401A6B   .  83FE 07       cmp     esi, 7
00401A6E   .^ 7C E4         jl      short 00401A54
00401A70   .  BE 08000000   mov     esi, 8                           ;  从第8位开始取,继续判断(注意这里跨过用户输入的第7个字符)
00401A75   >  0FBE8C34 8000>movsx   ecx, byte ptr [esp+esi+80]
00401A7D   .  51            push    ecx
00401A7E   .  FFD7          call    edi
00401A80   .  83C4 04       add     esp, 4
00401A83   .  85C0          test    eax, eax
00401A85   .  0F84 AB020000 je      00401D36
00401A8B   .  46            inc     esi
00401A8C   .  83FE 0F       cmp     esi, 0F
00401A8F   .^ 7C E4         jl      short 00401A75
00401A91   .  BE 10000000   mov     esi, 10
00401A96   >  0FBE9434 8000>movsx   edx, byte ptr [esp+esi+80]       ;  从第16位开始取,继续判断(注意这里跨过用户输入的第15个字符)
00401A9E   .  52            push    edx
00401A9F   .  FFD7          call    edi
00401AA1   .  83C4 04       add     esp, 4
00401AA4   .  85C0          test    eax, eax
00401AA6   .  0F84 8A020000 je      00401D36
00401AAC   .  46            inc     esi
00401AAD   .  83FE 17       cmp     esi, 17
00401AB0   .^ 7C E4         jl      short 00401A96
00401AB2   .  BE 18000000   mov     esi, 18                          ;  从第24位开始取,继续判断(注意这里跨过用户输入的第23个字符)
00401AB7   >  0FBE8434 8000>movsx   eax, byte ptr [esp+esi+80]
00401ABF   .  50            push    eax
00401AC0   .  FFD7          call    edi
00401AC2   .  83C4 04       add     esp, 4
00401AC5   .  85C0          test    eax, eax
00401AC7   .  0F84 69020000 je      00401D36
00401ACD   .  46            inc     esi
00401ACE   .  83FE 1F       cmp     esi, 1F
00401AD1   .^ 7C E4         jl      short 00401AB7
00401AD3   .  8A8C24 870000>mov     cl, byte ptr [esp+87]
00401ADA   .  B0 2D         mov     al, 2D                           ;  与2D(45)比较
00401ADC   .  3AC8          cmp     cl, al
00401ADE   .  74 16         je      short 00401AF6                   ;  相等跳
00401AE0   .  388424 8F0000>cmp     byte ptr [esp+8F], al
00401AE7   .  74 0D         je      short 00401AF6
00401AE9   .  388424 970000>cmp     byte ptr [esp+97], al
00401AF0   .  0F85 40020000 jnz     00401D36
00401AF6   >  8D4C24 40     lea     ecx, dword ptr [esp+40]
00401AFA   .  E8 EB040000   call    <jmp.&MFC42.#CString::CString_54>
00401AFF   .  8D8C24 800000>lea     ecx, dword ptr [esp+80]          ;  用户输入的注册码首地址存放到ECX
00401B06   .  C68424 CC0100>mov     byte ptr [esp+1CC], 11
00401B0E   .  51            push    ecx
00401B0F   .  8D4C24 44     lea     ecx, dword ptr [esp+44]          ;  从里面每7个一组取出用户输入的注册码并存放
00401B13   .  E8 02050000   call    <jmp.&MFC42.#CString::operator=_>
00401B18   .  8D4C24 6C     lea     ecx, dword ptr [esp+6C]
00401B1C   .  E8 C9040000   call    <jmp.&MFC42.#CString::CString_54>
00401B21   .  8D4C24 50     lea     ecx, dword ptr [esp+50]
00401B25   .  C68424 CC0100>mov     byte ptr [esp+1CC], 12
00401B2D   .  E8 B8040000   call    <jmp.&MFC42.#CString::CString_54>
00401B32   .  8D4C24 44     lea     ecx, dword ptr [esp+44]
00401B36   .  C68424 CC0100>mov     byte ptr [esp+1CC], 13
00401B3E   .  E8 A7040000   call    <jmp.&MFC42.#CString::CString_54>
00401B43   .  8D4C24 5C     lea     ecx, dword ptr [esp+5C]
00401B47   .  C68424 CC0100>mov     byte ptr [esp+1CC], 14
00401B4F   .  E8 96040000   call    <jmp.&MFC42.#CString::CString_54>
00401B54   .  6A 07         push    7
00401B56   .  8D5424 3C     lea     edx, dword ptr [esp+3C]
00401B5A   .  B3 15         mov     bl, 15
00401B5C   .  6A 00         push    0
00401B5E   .  52            push    edx
00401B5F   .  8D4C24 4C     lea     ecx, dword ptr [esp+4C]
00401B63   .  889C24 D80100>mov     byte ptr [esp+1D8], bl
00401B6A   .  E8 A5040000   call    <jmp.&MFC42.#CString::Mid_4278>
00401B6F   .  50            push    eax
00401B70   .  8D4C24 70     lea     ecx, dword ptr [esp+70]
00401B74   .  C68424 D00100>mov     byte ptr [esp+1D0], 16
00401B7C   .  E8 8D040000   call    <jmp.&MFC42.#CString::operator=_>
00401B81   .  8D4C24 38     lea     ecx, dword ptr [esp+38]
00401B85   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
00401B8C   .  E8 4D040000   call    <jmp.&MFC42.#CString::~CString_8>
00401B91   .  6A 07         push    7
00401B93   .  8D4424 3C     lea     eax, dword ptr [esp+3C]
00401B97   .  6A 08         push    8
00401B99   .  50            push    eax
00401B9A   .  8D4C24 4C     lea     ecx, dword ptr [esp+4C]
00401B9E   .  E8 71040000   call    <jmp.&MFC42.#CString::Mid_4278>
00401BA3   .  50            push    eax
00401BA4   .  8D4C24 54     lea     ecx, dword ptr [esp+54]
00401BA8   .  C68424 D00100>mov     byte ptr [esp+1D0], 17
00401BB0   .  E8 59040000   call    <jmp.&MFC42.#CString::operator=_>
00401BB5   .  8D4C24 38     lea     ecx, dword ptr [esp+38]
00401BB9   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
00401BC0   .  E8 19040000   call    <jmp.&MFC42.#CString::~CString_8>
00401BC5   .  6A 07         push    7
00401BC7   .  8D4C24 3C     lea     ecx, dword ptr [esp+3C]
00401BCB   .  6A 10         push    10
00401BCD   .  51            push    ecx
00401BCE   .  8D4C24 4C     lea     ecx, dword ptr [esp+4C]
00401BD2   .  E8 3D040000   call    <jmp.&MFC42.#CString::Mid_4278>
00401BD7   .  50            push    eax
00401BD8   .  8D4C24 48     lea     ecx, dword ptr [esp+48]
00401BDC   .  C68424 D00100>mov     byte ptr [esp+1D0], 18
00401BE4   .  E8 25040000   call    <jmp.&MFC42.#CString::operator=_>
00401BE9   .  8D4C24 38     lea     ecx, dword ptr [esp+38]
00401BED   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
00401BF4   .  E8 E5030000   call    <jmp.&MFC42.#CString::~CString_8>
00401BF9   .  6A 07         push    7
00401BFB   .  8D5424 3C     lea     edx, dword ptr [esp+3C]
00401BFF   .  6A 18         push    18
00401C01   .  52            push    edx
00401C02   .  8D4C24 4C     lea     ecx, dword ptr [esp+4C]
00401C06   .  E8 09040000   call    <jmp.&MFC42.#CString::Mid_4278>
00401C0B   .  50            push    eax
00401C0C   .  8D4C24 60     lea     ecx, dword ptr [esp+60]
00401C10   .  C68424 D00100>mov     byte ptr [esp+1D0], 19
00401C18   .  E8 F1030000   call    <jmp.&MFC42.#CString::operator=_>
00401C1D   .  8D4C24 38     lea     ecx, dword ptr [esp+38]
00401C21   .  889C24 CC0100>mov     byte ptr [esp+1CC], bl
00401C28   .  E8 B1030000   call    <jmp.&MFC42.#CString::~CString_8>
00401C2D   .  8B4424 6C     mov     eax, dword ptr [esp+6C]
00401C31   .  50            push    eax
00401C32   .  E8 99F8FFFF   call    004014D0                         ;  对每组用户的注册码进行MD5运算
00401C37   .  8B4C24 54     mov     ecx, dword ptr [esp+54]
00401C3B   .  8BE8          mov     ebp, eax
00401C3D   .  51            push    ecx
00401C3E   .  8BDA          mov     ebx, edx
00401C40   .  E8 8BF8FFFF   call    004014D0
00401C45   .  895424 60     mov     dword ptr [esp+60], edx
00401C49   .  8B5424 4C     mov     edx, dword ptr [esp+4C]
00401C4D   .  52            push    edx
00401C4E   .  894424 60     mov     dword ptr [esp+60], eax
00401C52   .  E8 79F8FFFF   call    004014D0
00401C57   .  894424 6C     mov     dword ptr [esp+6C], eax
00401C5B   .  8B4424 68     mov     eax, dword ptr [esp+68]
00401C5F   .  50            push    eax
00401C60   .  895424 74     mov     dword ptr [esp+74], edx
00401C64   .  E8 67F8FFFF   call    004014D0
00401C69   .  83C4 10       add     esp, 10
00401C6C   .  52            push    edx
00401C6D   .  50            push    eax
00401C6E   .  52            push    edx
00401C6F   .  50            push    eax
00401C70   .  E8 FB030000   call    00402070
00401C75   .  8B4C24 64     mov     ecx, dword ptr [esp+64]
00401C79   .  8BF0          mov     esi, eax
00401C7B   .  8B4424 60     mov     eax, dword ptr [esp+60]
00401C7F   .  51            push    ecx
00401C80   .  50            push    eax
00401C81   .  51            push    ecx
00401C82   .  50            push    eax
00401C83   .  8BFA          mov     edi, edx
00401C85   .  E8 E6030000   call    00402070
00401C8A   .  8B4C24 58     mov     ecx, dword ptr [esp+58]
00401C8E   .  03F0          add     esi, eax
00401C90   .  8B4424 54     mov     eax, dword ptr [esp+54]
00401C94   .  51            push    ecx
00401C95   .  50            push    eax
00401C96   .  51            push    ecx
00401C97   .  50            push    eax
00401C98   .  13FA          adc     edi, edx
00401C9A   .  E8 D1030000   call    00402070
00401C9F   .  53            push    ebx
00401CA0   .  55            push    ebp
00401CA1   .  03F0          add     esi, eax
00401CA3   .  53            push    ebx
00401CA4   .  55            push    ebp
00401CA5   .  13FA          adc     edi, edx
00401CA7   .  E8 C4030000   call    00402070
00401CAC   .  03F0          add     esi, eax
00401CAE   .  8B4424 48     mov     eax, dword ptr [esp+48]
00401CB2   .  13FA          adc     edi, edx
00401CB4   .  3BF0          cmp     esi, eax                         ;  爆破关键点(2个比较点)
00401CB6   .  75 14         jnz     short 00401CCC
00401CB8   .  3B7C24 4C     cmp     edi, dword ptr [esp+4C]
00401CBC   .  75 0E         jnz     short 00401CCC
00401CBE   .  6A 00         push    0
00401CC0   .  68 34404000   push    00404034                         ;  ASCII "ok"
00401CC5   .  68 28404000   push    00404028                         ;  ASCII "good job!"
00401CCA   .  EB 0C         jmp     short 00401CD8
00401CCC   >  6A 00         push    0
00401CCE   .  68 20404000   push    00404020                         ;  ASCII "error"
00401CD3   .  68 20404000   push    00404020                         ;  ASCII "error"
2009-3-4 21:22
0
雪    币: 1074
活跃值: (160)
能力值: ( LV13,RANK:760 )
在线值:
发帖
回帖
粉丝
25
call    004014D0                         ;  对每组用户的注册码进行MD5运算
   
    这里有误,你跟进去就知道了,真正MD5处理只进行过一次,就是前面MD5(username)得到的32位字符。这个CALL是对两个数进行相乘。
   设s = MD5(username)=XXX...XXX(32位)
  将s从前24截断,然后再从中截断成两个12位的s1,s2。
  逆序每3位取s1、s2的三个字符转为数字,这样会得到到 12/3 *2 =8组数字。
  然后将这s1中的4组数字每组进行平方,再求和,设为x = a^2+b^2+c^2+d^2。
  再对s2中的4组数字每组进行平方,再求和,设为y = x^2+y^2+z^2+w^2。
  注册码的数字应该是4组,用'-'分隔,形如xxxxxxx-xxxxxxx-xxxxxxx-xxxxxxx
  设为 U1-U2-U3-U4
  则if (x * y == U1^2+U2^2+U3^2 )注册成功!
  也就是(a^2+b^2+c^2+d^2)*(x^2+y^2+z^2+w^2) =  U1^2+U2^2+U3^2+U4^2
  结合前面的拉格公式,自然可得解。
2009-3-5 09:56
0
游客
登录 | 注册 方可回帖
返回
//