转个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 支持。。。。。。。 咋一看似乎是MD5算法... 原帖由 黑夜彩虹 于 2006-7-17 15:21 发表
咋一看似乎是MD5算法...
晕!不要吓我~咱还不会MD5! :L
黑夜彩虹 版主说得有道理
00401C77|.C706 5B205245 mov dword ptr , 4552205B00401C7D|.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]