野猫III 发表于 2006-7-16 15:04:50

转个Crackmes.de的一个汇编语言CrackMe给大家分析算法~

还在玩~

00401919   > \68 7C774000   PUSH crackme.0040777C                  ;ASCII "af1e494562deb831663ab217648d4b04"
0040191E   .E8 D5010000   CALL crackme.00401AF8
00401923   .8945 E4       MOV DWORD PTR SS:,EAX            ;EAX=12340000
00401926   .68 7C774000   PUSH crackme.0040777C                  ; /String = "af1e494562deb831663ab217648d4b04"
0040192B   .E8 D00C0000   CALL <JMP.&KERNEL32.lstrlenA>            ; \lstrlenA
00401930   .68 7F7A4000   PUSH crackme.00407A7F                  ; /取位数~
00401935   .50            PUSH EAX                                 ; |Arg2
00401936   .68 7C774000   PUSH crackme.0040777C                  ; |Arg1 = 0040777C ASCII "af1e494562deb831663ab217648d4b04"
0040193B   .E8 E3020000   CALL crackme.00401C23                  ; \crackme.00401C23
00401940   .B8 7C774000   MOV EAX,crackme.0040777C               ;ASCII "af1e494562deb831663ab217648d4b04"
00401945   .8B00          MOV EAX,DWORD PTR DS:               ;一组什么码出来的呀???
00401947   .35 0260F62F   XOR EAX,2FF66002                         ;EAX与0x2FF66002异或
0040194C   .8945 E8       MOV DWORD PTR SS:,EAX            ;结果放
0040194F   .68 01010000   PUSH 101                                 ; /Count = 101 (257.)
00401954   .68 7D784000   PUSH crackme.0040787D                  ; |Buffer = crackme.0040787D
00401959   .6A 0B         PUSH 0B                                  ; |ControlID = B (11.)
0040195B   .FF75 08       PUSH DWORD PTR SS:                ; |hWnd
0040195E   .E8 010C0000   CALL <JMP.&user32.GetDlgItemTextA>       ; \GetDlgItemTextA
00401963   .05 39050000   ADD EAX,539                              ;取试练码的位数加上0x539
00401968   .35 ADDE0000   XOR EAX,0DEAD                            ;再与0x0DEAD异或~
0040196D   .2D AD0B0000   SUB EAX,0BAD                           ;结果减去0x0BAD
00401972   .05 DEC00000   ADD EAX,0C0DE                            ;再加上0xC0DE
00401977   .35 78563412   XOR EAX,12345678                         ;再与0x12345678异或~晕!
0040197C   .3D 5AC73512   CMP EAX,1235C75A                         ;结果与0x1235C75A比较
00401981   .0F85 D0000000 JNZ crackme.00401A57                     ;不等挂~
00401987   .802D 85784000>SUB BYTE PTR DS:,2D
0040198E   .0F85 C3000000 JNZ crackme.00401A57
00401994   .802D 8E784000>SUB BYTE PTR DS:,2D
0040199B   .0F85 B6000000 JNZ crackme.00401A57
004019A1   .802D 97784000>SUB BYTE PTR DS:,2D
004019A8   .0F85 A9000000 JNZ crackme.00401A57
004019AE   .68 98784000   PUSH crackme.00407898
004019B3   .E8 40010000   CALL crackme.00401AF8
004019B8   .A3 68774000   MOV DWORD PTR DS:,EAX
004019BD   .68 8F784000   PUSH crackme.0040788F
004019C2   .E8 31010000   CALL crackme.00401AF8
004019C7   .A3 64774000   MOV DWORD PTR DS:,EAX
004019CC   .68 86784000   PUSH crackme.00407886
004019D1   .E8 22010000   CALL crackme.00401AF8
004019D6   .A3 60774000   MOV DWORD PTR DS:,EAX
004019DB   .68 7D784000   PUSH crackme.0040787D                  ;ASCII "98765"
004019E0   .E8 13010000   CALL crackme.00401AF8
004019E5   .A3 5C774000   MOV DWORD PTR DS:,EAX            ;试练码EAX=98760000
004019EA   .35 93CD6B34   XOR EAX,346BCD93                         ;试练码与0x346BCD93异或~
004019EF   .2D DEC0AD0B   SUB EAX,0BADC0DE                         ;减去0x0BADCDE
004019F4   .74 61         JE SHORT crackme.00401A57                ;相等就挂~
004019F6   .05 DEC0AD0B   ADD EAX,0BADC0DE                         ;EAX加上0x0BADC0DE
004019FB   .35 93CD6B34   XOR EAX,346BCD93                         ;与0x346BCD93异或~
00401A00   .35 6C6F7264   XOR EAX,64726F6C                         ;再与0x64726F6C异或~
00401A05   .2D EFBEADDE   SUB EAX,DEADBEEF                         ;减去0xDEADBEEF
00401A0A   .75 4B         JNZ SHORT crackme.00401A57               ;跳就挂~
00401A0C   .A1 60774000   MOV EAX,DWORD PTR DS:            ;用户名进EAX
00401A11   .2B45 E4       SUB EAX,DWORD PTR SS:            ;EAX减去
00401A14   .3D 02600620   CMP EAX,20066002                         ;结果与0x20066002比较~
00401A19   .75 3C         JNZ SHORT crackme.00401A57               ;不等挂~
00401A1B   .A1 64774000   MOV EAX,DWORD PTR DS:
00401A20   .3345 E8       XOR EAX,DWORD PTR SS:
00401A23   .68 DE1B4000   PUSH crackme.00401BDE                  ;SE 处理程序安装
00401A28   .64:FF35 00000>PUSH DWORD PTR FS:
00401A2F   .64:8925 00000>MOV DWORD PTR FS:,ESP
00401A36   .FFD0          CALL EAX                                 ;Call进比较~标志位回送~
00401A38   .64:8F05 00000>POP DWORD PTR FS:
00401A3F   .83C4 04       ADD ESP,4
00401A42   .0BC0          OR EAX,EAX
00401A44   .75 11         JNZ SHORT crackme.00401A57               ;还跳就挂~这么多的检测~~~
00401A46   .68 71724000   PUSH crackme.00407271                  ; /congratulations, cracker!
00401A4B   .6A 0B         PUSH 0B                                  ; |ControlID = B (11.)
00401A4D   .FF75 08       PUSH DWORD PTR SS:                ; |hWnd
00401A50   .E8 4B0B0000   CALL <JMP.&user32.SetDlgItemTextA>       ; \SetDlgItemTextA
00401A55   .EB 0F         JMP SHORT crackme.00401A66
00401A57   >68 8B724000   PUSH crackme.0040728B                  ; /try harder, m8!
00401A5C   .6A 0B         PUSH 0B                                  ; |ControlID = B (11.)
00401A5E   .FF75 08       PUSH DWORD PTR SS:                ; |hWnd
00401A61   .E8 3A0B0000   CALL <JMP.&user32.SetDlgItemTextA>       ; \SetDlgItemTextA
00401A66   >C9            LEAVE
00401A67   .C2 1000       RETN 10

caterpilla 发表于 2006-7-16 16:04:49

支持。。。。。。。

黑夜彩虹 发表于 2006-7-17 15:21:31

咋一看似乎是MD5算法...

野猫III 发表于 2006-7-18 19:16:21

原帖由 黑夜彩虹 于 2006-7-17 15:21 发表
咋一看似乎是MD5算法...

晕!不要吓我~咱还不会MD5! :L

wzwgp 发表于 2006-7-18 20:41:26

黑夜彩虹 版主说得有道理

00401C77|.C706 5B205245 mov   dword ptr , 4552205B
00401C7D|.C746 04 56454>mov   dword ptr , 474E4556
00401C84|.C746 08 45204>mov   dword ptr , 72432045
00401C8B|.C746 0C 65772>mov   dword ptr , 5D207765

猫兄上面可能是MD5的4个常数,非标准的。
wzwgp经过上面加密=ad7e59d81d8c8c742539cd1c76466726
页: [1]
查看完整版本: 转个Crackmes.de的一个汇编语言CrackMe给大家分析算法~