-
-
[原创]Crackme 算法分析
-
发表于: 2007-6-21 18:37 4827
-
【破文標題】PYG 5.4Cracker
【破文作者】史克威爾
【作者郵箱】squeare20012001@yafoo.com.tw
【破解工具】peid,W32Dasm,od
【破解平臺】winxp
【軟體名稱】Crackme
【保護方式】無
【軟體簡介】Crackme
------------------------------------------------------------------------
一、運行程式,找到註冊視窗進行註冊,輸入錯誤的註冊資訊按確定進行檢測,沒有任何反應
看來是必須輸入正確的註冊碼才會啟動,書住正確的註冊碼會 “跳出恭喜你註冊
二、OD載入用插件超級字串找到恭喜你註冊碼正確 點兩下跳到代碼:
00408E6D |. 68 B88F4000 PUSH CodeFant.00408FB8 恭喜您,註冊碼正確!
往上找在00408DDC下中斷點
三、輸入用戶名chuan 註冊碼123456789點確定程式被斷下
00408C70 /. 55 PUSH EBP-------程式入口
00408C71 |. 8BEC MOV EBP,ESP
00408C73 |. 83C4 A8 ADD ESP,-58
00408C76 |. 53 PUSH EBX
00408C77 |. 33C0 XOR EAX,EAX
00408C79 |. 8945 B0 MOV [LOCAL.20],EAX
00408C7C |. 8945 A8 MOV [LOCAL.22],EAX
00408C7F |. 8945 AC MOV [LOCAL.21],EAX
00408C82 |. 8945 B4 MOV [LOCAL.19],EAX
00408C85 |. 33C0 XOR EAX,EAX
00408C87 |. 55 PUSH EBP
00408C88 |. 68 648F4000 PUSH CodeFant.00408F64
00408C8D |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00408C90 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00408C93 |. 8B45 0C MOV EAX,[ARG.2]
00408C96 |. 3D 11010000 CMP EAX,111 ; Switch (cases 2..201)
00408C9B |. 7F 2D JG SHORT CodeFant.00408CCA
00408C9D |. 0F84 15010000 JE CodeFant.00408DB8
00408CA3 |. 83E8 02 SUB EAX,2
00408CA6 |. 0F84 84020000 JE CodeFant.00408F30
00408CAC |. 83E8 0D SUB EAX,0D
00408CAF |. 0F84 C5000000 JE CodeFant.00408D7A
00408CB5 |. 83E8 1C SUB EAX,1C
00408CB8 |. 0F84 F7010000 JE CodeFant.00408EB5
00408CBE |. 2D E5000000 SUB EAX,0E5
00408CC3 |. 74 2E JE SHORT CodeFant.00408CF3
00408CC5 |. E9 7D020000 JMP CodeFant.00408F47
00408CCA |> 2D 13010000 SUB EAX,113
00408CCF |. 0F84 EF010000 JE CodeFant.00408EC4
00408CD5 |. 83E8 23 SUB EAX,23
00408CD8 |. 0F84 16020000 JE CodeFant.00408EF4
00408CDE |. 83E8 02 SUB EAX,2
00408CE1 |. 0F84 2B020000 JE CodeFant.00408F12
00408CE7 |. 2D C9000000 SUB EAX,0C9
00408CEC |. 74 48 JE SHORT CodeFant.00408D36
00408CEE |. E9 54020000 JMP CodeFant.00408F47
00408CF3 |> 8B45 08 MOV EAX,[ARG.1] ; Case 110 (WM_INITDIALOG) of switch 00408C96
00408CF6 |. A3 ACB74000 MOV DWORD PTR DS:[40B7AC],EAX
00408CFB |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; /pRect = CodeFant.0040A4C8
00408D00 |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D03 |. 50 PUSH EAX ; |hWnd
00408D04 |. E8 43BAFFFF CALL <JMP.&user32.GetClientRect> ; \GetClientRect
00408D09 |. A1 CCA44000 MOV EAX,DWORD PTR DS:[40A4CC]
00408D0E |. 83C0 14 ADD EAX,14
00408D11 |. A3 D4A44000 MOV DWORD PTR DS:[40A4D4],EAX
00408D16 |. 68 748F4000 PUSH CodeFant.00408F74 ; /codefantasy系列crackme1
00408D1B |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D1E |. 50 PUSH EAX ; |hWnd
00408D1F |. E8 B8BAFFFF CALL <JMP.&user32.SetWindowTextA> ; \SetWindowTextA
00408D24 |. 8B45 08 MOV EAX,[ARG.1]
00408D27 |. E8 40F3FFFF CALL CodeFant.0040806C
00408D2C |. BB 01000000 MOV EBX,1
00408D31 |. E9 13020000 JMP CodeFant.00408F49
00408D36 |> 0FB745 14 MOVZX EAX,WORD PTR SS:[EBP+14] ; Case 201 (WM_LBUTTONDOWN) of switch 00408C96
00408D3A |. 8945 F8 MOV [LOCAL.2],EAX
00408D3D |. 8B45 14 MOV EAX,[ARG.4]
00408D40 |. E8 AFBAFFFF CALL CodeFant.004047F4
00408D45 |. 0FB7C0 MOVZX EAX,AX
00408D48 |. 8945 FC MOV [LOCAL.1],EAX
00408D4B |. FF75 FC PUSH [LOCAL.1] ; /Point.Y
00408D4E |. FF75 F8 PUSH [LOCAL.2] ; |Point.X
00408D51 |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; |pRect = 0040A4C8 {0.,0.,306.,20.}
00408D56 |. E8 51BAFFFF CALL <JMP.&user32.PtInRect> ; \PtInRect
00408D5B |. 85C0 TEST EAX,EAX
00408D5D |. 0F84 E6010000 JE CodeFant.00408F49
00408D63 |. 6A 00 PUSH 0 ; /lParam = 0
00408D65 |. 6A 02 PUSH 2 ; |wParam = 2
00408D67 |. 68 A1000000 PUSH 0A1 ; |Message = WM_NCLBUTTONDOWN
00408D6C |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D6F |. 50 PUSH EAX ; |hWnd
00408D70 |. E8 27BAFFFF CALL <JMP.&user32.PostMessageA> ; \PostMessageA
00408D75 |. E9 CF010000 JMP CodeFant.00408F49
00408D7A |> 8D45 B8 LEA EAX,[LOCAL.18] ; Case F (WM_PAINT) of switch 00408C96
00408D7D |. 50 PUSH EAX ; /pPaintstruct
00408D7E |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D81 |. 50 PUSH EAX ; |hWnd
00408D82 |. E8 6DB9FFFF CALL <JMP.&user32.BeginPaint> ; \BeginPaint
00408D87 |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; /Arg3 = 0040A4C8
00408D8C |. 68 40D9FE00 PUSH 0FED940 ; |Arg2 = 00FED940
00408D91 |. 68 0B198B00 PUSH 8B190B ; |Arg1 = 008B190B
00408D96 |. B9 948F4000 MOV ECX,CodeFant.00408F94 ; |codefantasy系列crackme1
00408D9B |. 8B15 A8B74000 MOV EDX,DWORD PTR DS:[40B7A8] ; |
00408DA1 |. E8 8AF3FFFF CALL CodeFant.00408130 ; \CodeFant.00408130
00408DA6 |. 8D45 B8 LEA EAX,[LOCAL.18]
00408DA9 |. 50 PUSH EAX ; /pPaintstruct
00408DAA |. 8B45 08 MOV EAX,[ARG.1] ; |
00408DAD |. 50 PUSH EAX ; |hWnd
00408DAE |. E8 81B9FFFF CALL <JMP.&user32.EndPaint> ; \EndPaint
00408DB3 |. E9 91010000 JMP CodeFant.00408F49
00408DB8 |> 8B45 10 MOV EAX,[ARG.3] ; Case 111 (WM_COMMAND) of switch 00408C96
00408DBB |. 2D E9030000 SUB EAX,3E9 ; Switch (cases 3E9..3EC)
00408DC0 |. 0F84 B7000000 JE CodeFant.00408E7D
00408DC6 |. 48 DEC EAX
00408DC7 |. 74 13 JE SHORT CodeFant.00408DDC
00408DC9 |. 48 DEC EAX
00408DCA |. 0F84 C6000000 JE CodeFant.00408E96
00408DD0 |. 48 DEC EAX
00408DD1 |. 0F84 CC000000 JE CodeFant.00408EA3
00408DD7 |. E9 D2000000 JMP CodeFant.00408EAE
00408DDC |> 68 FF000000 PUSH 0FF ; /Count = FF (255.); Case 3EA of switch 00408DBB-------下中斷點
00408DE1 |. 68 9CA24000 PUSH CodeFant.0040A29C ; |Buffer = CodeFant.0040A29C
00408DE6 |. 68 F2030000 PUSH 3F2 ; |ControlID = 3F2 (1010.)
00408DEB |. 8B45 08 MOV EAX,[ARG.1] ; |
00408DEE |. 50 PUSH EAX ; |hWnd
00408DEF |. E8 68B9FFFF CALL <JMP.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
00408DF4 |. 8D45 B4 LEA EAX,[LOCAL.19]
00408DF7 |. BA 9CA24000 MOV EDX,CodeFant.0040A29C -------取用戶名
00408DFC |. B9 FF000000 MOV ECX,0FF
00408E01 |. E8 6AAAFFFF CALL CodeFant.00403870
00408E06 |. 837D B4 00 CMP [LOCAL.19],0 ----比較用戶是否為空
00408E0A |. 0F84 9E000000 JE CodeFant.00408EAE-----如果沒有輸入遊戲就結束了
00408E10 |. 68 FF000000 PUSH 0FF ; /Count = FF (255.)
00408E15 |. 68 9CA34000 PUSH CodeFant.0040A39C ; |Buffer = CodeFant.0040A39C
00408E1A |. 68 F3030000 PUSH 3F3 ; |ControlID = 3F3 (1011.)
00408E1F |. 8B45 08 MOV EAX,[ARG.1] ; |
00408E22 |. 50 PUSH EAX ; |hWnd
00408E23 |. E8 34B9FFFF CALL <JMP.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
00408E28 |. 8D45 AC LEA EAX,[LOCAL.21]
00408E2B |. BA 9CA24000 MOV EDX,CodeFant.0040A29C
00408E30 |. B9 FF000000 MOV ECX,0FF
00408E35 |. E8 36AAFFFF CALL CodeFant.00403870
00408E3A |. 8B45 AC MOV EAX,[LOCAL.21]
00408E3D |. 8D55 B0 LEA EDX,[LOCAL.20]
00408E40 |. E8 23FCFFFF CALL CodeFant.00408A68----------演算法(逐一取用戶名
00408E45 |. 8B45 B0 MOV EAX,[LOCAL.20]
00408E48 |. 50 PUSH EAX
00408E49 |. 8D45 A8 LEA EAX,[LOCAL.22]
00408E4C |. BA 9CA34000 MOV EDX,CodeFant.0040A39C
00408E51 |. B9 FF000000 MOV ECX,0FF
00408E56 |. E8 15AAFFFF CALL CodeFant.00403870
00408E5B |. 8B55 A8 MOV EDX,[LOCAL.22]
00408E5E |. 58 POP EAX
00408E5F |. E8 84ABFFFF CALL CodeFant.004039E8
00408E64 |. 75 48 JNZ SHORT CodeFant.00408EAE-------關鍵朓轉(爆破點)
00408E66 |. 6A 40 PUSH 40 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00408E68 |. 68 AC8F4000 PUSH CodeFant.00408FAC ; |註冊提示
00408E6D |. 68 B88F4000 PUSH CodeFant.00408FB8 ; |恭喜您,註冊碼正確!
00408E72 |. 8B45 08 MOV EAX,[ARG.1] ; |
00408E75 |. 50 PUSH EAX ; |hOwner
00408E76 |. E8 19B9FFFF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
進入此call 00408E40 |. E8 23FCFFFF CALL CodeFant.00408A68
00408A68 /$ 55 PUSH EBP
00408A69 |. 8BEC MOV EBP,ESP
00408A6B |. B9 07000000 MOV ECX,7
00408A70 |> 6A 00 /PUSH 0
00408A72 |. 6A 00 |PUSH 0
00408A74 |. 49 |DEC ECX
00408A75 |.^ 75 F9 \JNZ SHORT CodeFant.00408A70
00408A77 |. 51 PUSH ECX
00408A78 |. 53 PUSH EBX
00408A79 |. 56 PUSH ESI
00408A7A |. 57 PUSH EDI
00408A7B |. 8955 F8 MOV [LOCAL.2],EDX
00408A7E |. 8945 FC MOV [LOCAL.1],EAX
00408A81 |. 8B45 FC MOV EAX,[LOCAL.1]
00408A84 |. E8 03B0FFFF CALL CodeFant.00403A8C
00408A89 |. 33C0 XOR EAX,EAX
00408A8B |. 55 PUSH EBP
00408A8C |. 68 498C4000 PUSH CodeFant.00408C49
00408A91 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00408A94 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00408A97 |. 8D45 F4 LEA EAX,[LOCAL.3]
00408A9A |. E8 89ABFFFF CALL CodeFant.00403628
00408A9F |. 8B45 FC MOV EAX,[LOCAL.1]
00408AA2 |. E8 F5ADFFFF CALL CodeFant.0040389C
00408AA7 |. 8BF8 MOV EDI,EAX
00408AA9 |. 85FF TEST EDI,EDI
00408AAB |. 7E 28 JLE SHORT CodeFant.00408AD5
00408AAD |. BE 01000000 MOV ESI,1
00408AB2 |> 8B45 FC /MOV EAX,[LOCAL.1]
00408AB5 |. 33DB |XOR EBX,EBX
00408AB7 |. 8A5C30 FF |MOV BL,BYTE PTR DS:[EAX+ESI-1]--- 逐一取用戶名
00408ABB |. 43 |INC EBX
00408ABC |. 8D45 D8 |LEA EAX,[LOCAL.10] ;用戶名給eax
00408ABF |. 8BD3 |MOV EDX,EBX
00408AC1 |. E8 2EADFFFF |CALL CodeFant.004037F4
00408AC6 |. 8B55 D8 |MOV EDX,[LOCAL.10]
00408AC9 |. 8D45 F4 |LEA EAX,[LOCAL.3]
00408ACC |. E8 D3ADFFFF |CALL CodeFant.004038A4
00408AD1 |. 46 |INC ESI
00408AD2 |. 4F |DEC EDI
00408AD3 |.^ 75 DD \JNZ SHORT CodeFant.00408AB2
00408AD5 |> 8D45 F0 LEA EAX,[LOCAL.4]
00408AD8 |. 8B55 F4 MOV EDX,[LOCAL.3]
00408ADB |. E8 E0ABFFFF CALL CodeFant.004036C0 ;運算後淂divbo
00408AE0 |. 8D45 F4 LEA EAX,[LOCAL.3]
00408AE3 |. E8 40ABFFFF CALL CodeFant.00403628
00408AE8 |. 8B45 F0 MOV EAX,[LOCAL.4]
00408AEB |. E8 ACADFFFF CALL CodeFant.0040389C
00408AF0 |. 8BF8 MOV EDI,EAX
00408AF2 |. 85FF TEST EDI,EDI
00408AF4 |. 7E 2A JLE SHORT CodeFant.00408B20
00408AF6 |. BE 01000000 MOV ESI,1
00408AFB |> 8B45 F0 /MOV EAX,[LOCAL.4]
00408AFE |. 33DB |XOR EBX,EBX
00408B00 |. 8A5C30 FF |MOV BL,BYTE PTR DS:[EAX+ESI-1] 取用戶名運算後所得之divbo運算
00408B04 |. 83C3 02 |ADD EBX,2
00408B07 |. 8D45 D4 |LEA EAX,[LOCAL.11]
00408B0A |. 8BD3 |MOV EDX,EBX
00408B0C |. E8 E3ACFFFF |CALL CodeFant.004037F4
00408B11 |. 8B55 D4 |MOV EDX,[LOCAL.11]
00408B14 |. 8D45 F4 |LEA EAX,[LOCAL.3]
00408B17 |. E8 88ADFFFF |CALL CodeFant.004038A4
00408B1C |. 46 |INC ESI
00408B1D |. 4F |DEC EDI
00408B1E |.^ 75 DB \JNZ SHORT CodeFant.00408AFB
00408B20 |> 8D45 EC LEA EAX,[LOCAL.5]
00408B23 |. 8B55 F4 MOV EDX,[LOCAL.3]--------:divbo運算得到fkxdq
00408B26 |. E8 95ABFFFF CALL CodeFant.004036C0
00408B2B |. 8D45 F4 LEA EAX,[LOCAL.3]
00408B2E |. E8 F5AAFFFF CALL CodeFant.00403628
00408B33 |. 8B45 EC MOV EAX,[LOCAL.5]
00408B36 |. E8 61ADFFFF CALL CodeFant.0040389C
00408B3B |. 8BF8 MOV EDI,EAX
00408B3D |. 85FF TEST EDI,EDI
00408B3F |. 7E 2A JLE SHORT CodeFant.00408B6B
00408B41 |. BE 01000000 MOV ESI,1
00408B46 |> 8B45 EC /MOV EAX,[LOCAL.5]
00408B49 |. 33DB |XOR EBX,EBX
00408B4B |. 8A5C30 FF |MOV BL,BYTE PTR DS:[EAX+ESI-1]
00408B4F |. 83C3 03 |ADD EBX,3 --------------;再取fkxdq運算
00408B52 |. 8D45 D0 |LEA EAX,[LOCAL.12]
00408B55 |. 8BD3 |MOV EDX,EBX
00408B57 |. E8 98ACFFFF |CALL CodeFant.004037F4
00408B5C |. 8B55 D0 |MOV EDX,[LOCAL.12]
00408B5F |. 8D45 F4 |LEA EAX,[LOCAL.3]
00408B62 |. E8 3DADFFFF |CALL CodeFant.004038A4
00408B67 |. 46 |INC ESI
00408B68 |. 4F |DEC EDI
00408B69 |.^ 75 DB \JNZ SHORT CodeFant.00408B46
00408B6B |> 8D45 E8 LEA EAX,[LOCAL.6]
00408B6E |. 8B55 F4 MOV EDX,[LOCAL.3]-----------; 運算後得到(ASCII "in{gt")
00408B71 |. E8 4AABFFFF CALL CodeFant.004036C0
00408B76 |. 8D45 F4 LEA EAX,[LOCAL.3]
00408B79 |. E8 AAAAFFFF CALL CodeFant.00403628
00408B7E |. 8B45 E8 MOV EAX,[LOCAL.6]
00408B81 |. E8 16ADFFFF CALL CodeFant.0040389C
00408B86 |. 8BF8 MOV EDI,EAX
00408B88 |. 85FF TEST EDI,EDI
00408B8A |. 7E 2A JLE SHORT CodeFant.00408BB6
00408B8C |. BE 01000000 MOV ESI,1
00408B91 |> 8B45 E8 /MOV EAX,[LOCAL.6]
00408B94 |. 33DB |XOR EBX,EBX
00408B96 |. 8A5C30 FF |MOV BL,BYTE PTR DS:[EAX+ESI-1]-------; in{gt再運算
00408B9A |. 83C3 04 |ADD EBX,4
00408B9D |. 8D45 CC |LEA EAX,[LOCAL.13]
00408BA0 |. 8BD3 |MOV EDX,EBX
00408BA2 |. E8 4DACFFFF |CALL CodeFant.004037F4
00408BA7 |. 8B55 CC |MOV EDX,[LOCAL.13]
00408BAA |. 8D45 F4 |LEA EAX,[LOCAL.3]
00408BAD |. E8 F2ACFFFF |CALL CodeFant.004038A4
00408BB2 |. 46 |INC ESI
00408BB3 |. 4F |DEC EDI
00408BB4 |.^ 75 DB \JNZ SHORT CodeFant.00408B91
00408BB6 |> 8D45 E4 LEA EAX,[LOCAL.7]
00408BB9 |. E8 6AAAFFFF CALL CodeFant.00403628
00408BBE |. 8B45 F4 MOV EAX,[LOCAL.3]
00408BC1 |. E8 D6ACFFFF CALL CodeFant.0040389C
00408BC6 |. 8BF8 MOV EDI,EAX
00408BC8 |. 4F DEC EDI
00408BC9 |. 85FF TEST EDI,EDI
00408BCB |. 7C 4E JL SHORT CodeFant.00408C1B
00408BCD |. 47 INC EDI
00408BCE |. 33F6 XOR ESI,ESI
00408BD0 |> 8D45 DC /LEA EAX,[LOCAL.9]
00408BD3 |. 50 |PUSH EAX ; /Arg1
00408BD4 |. 8B45 F4 |MOV EAX,[LOCAL.3] ; |
00408BD7 |. 0FB60430 |MOVZX EAX,BYTE PTR DS:[EAX+ESI] ; |
00408BDB |. 8945 C4 |MOV [LOCAL.15],EAX ; |
00408BDE |. C645 C8 00 |MOV BYTE PTR SS:[EBP-38],0 ; |
00408BE2 |. 8D55 C4 |LEA EDX,[LOCAL.15] ; |
00408BE5 |. 33C9 |XOR ECX,ECX ; |
00408BE7 |. B8 608C4000 |MOV EAX,CodeFant.00408C60 ; |ASCII "%x"
00408BEC |. E8 1FD1FFFF |CALL CodeFant.00405D10 ; \CodeFant.00405D10
00408BF1 |. 8B45 DC |MOV EAX,[LOCAL.9]
00408BF4 |. E8 A3ACFFFF |CALL CodeFant.0040389C
00408BF9 |. 48 |DEC EAX
00408BFA |. 75 10 |JNZ SHORT CodeFant.00408C0C
00408BFC |. 8D45 DC |LEA EAX,[LOCAL.9]
00408BFF |. 8B4D DC |MOV ECX,[LOCAL.9]
00408C02 |. BA 6C8C4000 |MOV EDX,CodeFant.00408C6C
00408C07 |. E8 DCACFFFF |CALL CodeFant.004038E8
00408C0C |> 8D45 E0 |LEA EAX,[LOCAL.8]
00408C0F |. 8B55 DC |MOV EDX,[LOCAL.9]
00408C12 |. E8 8DACFFFF |CALL CodeFant.004038A4
00408C17 |. 46 |INC ESI
00408C18 |. 4F |DEC EDI
00408C19 |.^ 75 B5 \JNZ SHORT CodeFant.00408BD0
00408C1B |> 8B45 F8 MOV EAX,[LOCAL.2]
00408C1E |. 8B55 E0 MOV EDX,[LOCAL.8]
00408C21 |. E8 56AAFFFF CALL CodeFant.0040367C------------記憶體註冊機
00408C26 |. 33C0 XOR EAX,EAX
00408C28 |. 5A POP EDX
00408C29 |. 59 POP ECX
00408C2A |. 59 POP ECX
00408C2B |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
00408C2E |. 68 508C4000 PUSH CodeFant.00408C50
00408C33 |> 8D45 CC LEA EAX,[LOCAL.13]
00408C36 |. BA 0B000000 MOV EDX,0B
00408C3B |. E8 0CAAFFFF CALL CodeFant.0040364C
00408C40 |. 8D45 FC LEA EAX,[LOCAL.1]
00408C43 |. E8 E0A9FFFF CALL CodeFant.00403628
00408C48 \. C3 RETN
00408C49 .^\E9 02A4FFFF JMP CodeFant.00403050
00408C4E .^ EB E3 JMP SHORT CodeFant.00408C33
00408C50 . 5F POP EDI
00408C51 . 5E POP ESI
00408C52 . 5B POP EBX
00408C53 . 8BE5 MOV ESP,EBP
00408C55 . 5D POP EBP
00408C56 . C3 RETN
00408C57 00 DB 00
00408C58 . FFFFFFFF DD FFFFFFFF
00408C5C . 02000000 DD 00000002
00408C60 . 25 78 00 ASCII "%x",0
00408C63 00 DB 00
00408C64 . FFFFFFFF DD FFFFFFFF
00408C68 . 01000000 DD 00000001
00408C6C . 30 00 ASCII "0",0
00408C6E 00 DB 00
00408C6F 00 DB 00
00408C70 /. 55 PUSH EBP
00408C71 |. 8BEC MOV EBP,ESP
00408C73 |. 83C4 A8 ADD ESP,-58
00408C76 |. 53 PUSH EBX
00408C77 |. 33C0 XOR EAX,EAX
00408C79 |. 8945 B0 MOV [LOCAL.20],EAX
00408C7C |. 8945 A8 MOV [LOCAL.22],EAX
00408C7F |. 8945 AC MOV [LOCAL.21],EAX
00408C82 |. 8945 B4 MOV [LOCAL.19],EAX
00408C85 |. 33C0 XOR EAX,EAX
00408C87 |. 55 PUSH EBP
00408C88 |. 68 648F4000 PUSH CodeFant.00408F64
00408C8D |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00408C90 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00408C93 |. 8B45 0C MOV EAX,[ARG.2]
00408C96 |. 3D 11010000 CMP EAX,111 ; Switch (cases 2..201)
00408C9B |. 7F 2D JG SHORT CodeFant.00408CCA
00408C9D |. 0F84 15010000 JE CodeFant.00408DB8
00408CA3 |. 83E8 02 SUB EAX,2
00408CA6 |. 0F84 84020000 JE CodeFant.00408F30
00408CAC |. 83E8 0D SUB EAX,0D
00408CAF |. 0F84 C5000000 JE CodeFant.00408D7A
00408CB5 |. 83E8 1C SUB EAX,1C
00408CB8 |. 0F84 F7010000 JE CodeFant.00408EB5
00408CBE |. 2D E5000000 SUB EAX,0E5
00408CC3 |. 74 2E JE SHORT CodeFant.00408CF3
00408CC5 |. E9 7D020000 JMP CodeFant.00408F47
00408CCA |> 2D 13010000 SUB EAX,113
00408CCF |. 0F84 EF010000 JE CodeFant.00408EC4
00408CD5 |. 83E8 23 SUB EAX,23
00408CD8 |. 0F84 16020000 JE CodeFant.00408EF4
00408CDE |. 83E8 02 SUB EAX,2
00408CE1 |. 0F84 2B020000 JE CodeFant.00408F12
00408CE7 |. 2D C9000000 SUB EAX,0C9
00408CEC |. 74 48 JE SHORT CodeFant.00408D36
00408CEE |. E9 54020000 JMP CodeFant.00408F47
00408CF3 |> 8B45 08 MOV EAX,[ARG.1] ; Case 110 (WM_INITDIALOG) of switch 00408C96
00408CF6 |. A3 ACB74000 MOV DWORD PTR DS:[40B7AC],EAX
00408CFB |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; /pRect = CodeFant.0040A4C8
00408D00 |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D03 |. 50 PUSH EAX ; |hWnd
00408D04 |. E8 43BAFFFF CALL <JMP.&user32.GetClientRect> ; \GetClientRect
00408D09 |. A1 CCA44000 MOV EAX,DWORD PTR DS:[40A4CC]
00408D0E |. 83C0 14 ADD EAX,14
00408D11 |. A3 D4A44000 MOV DWORD PTR DS:[40A4D4],EAX
00408D16 |. 68 748F4000 PUSH CodeFant.00408F74 ; /Text = "CodeFantasy炵蹈CrackMe1"
00408D1B |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D1E |. 50 PUSH EAX ; |hWnd
00408D1F |. E8 B8BAFFFF CALL <JMP.&user32.SetWindowTextA> ; \SetWindowTextA
00408D24 |. 8B45 08 MOV EAX,[ARG.1]
00408D27 |. E8 40F3FFFF CALL CodeFant.0040806C
00408D2C |. BB 01000000 MOV EBX,1
00408D31 |. E9 13020000 JMP CodeFant.00408F49
00408D36 |> 0FB745 14 MOVZX EAX,WORD PTR SS:[EBP+14] ; Case 201 (WM_LBUTTONDOWN) of switch 00408C96
00408D3A |. 8945 F8 MOV [LOCAL.2],EAX
00408D3D |. 8B45 14 MOV EAX,[ARG.4]
00408D40 |. E8 AFBAFFFF CALL CodeFant.004047F4
00408D45 |. 0FB7C0 MOVZX EAX,AX
00408D48 |. 8945 FC MOV [LOCAL.1],EAX
00408D4B |. FF75 FC PUSH [LOCAL.1] ; /Point.Y
00408D4E |. FF75 F8 PUSH [LOCAL.2] ; |Point.X
00408D51 |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; |pRect = 0040A4C8 {0.,0.,306.,20.}
00408D56 |. E8 51BAFFFF CALL <JMP.&user32.PtInRect> ; \PtInRect
00408D5B |. 85C0 TEST EAX,EAX
00408D5D |. 0F84 E6010000 JE CodeFant.00408F49
00408D63 |. 6A 00 PUSH 0 ; /lParam = 0
00408D65 |. 6A 02 PUSH 2 ; |wParam = 2
00408D67 |. 68 A1000000 PUSH 0A1 ; |Message = WM_NCLBUTTONDOWN
00408D6C |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D6F |. 50 PUSH EAX ; |hWnd
00408D70 |. E8 27BAFFFF CALL <JMP.&user32.PostMessageA> ; \PostMessageA
00408D75 |. E9 CF010000 JMP CodeFant.00408F49
00408D7A |> 8D45 B8 LEA EAX,[LOCAL.18] ; Case F (WM_PAINT) of switch 00408C96
00408D7D |. 50 PUSH EAX ; /pPaintstruct
00408D7E |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D81 |. 50 PUSH EAX ; |hWnd
00408D82 |. E8 6DB9FFFF CALL <JMP.&user32.BeginPaint> ; \BeginPaint
00408D87 |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; /Arg3 = 0040A4C8
00408D8C |. 68 40D9FE00 PUSH 0FED940 ; |Arg2 = 00FED940
00408D91 |. 68 0B198B00 PUSH 8B190B ; |Arg1 = 008B190B
00408D96 |. B9 948F4000 MOV ECX,CodeFant.00408F94 ; |
00408D9B |. 8B15 A8B74000 MOV EDX,DWORD PTR DS:[40B7A8] ; |
00408DA1 |. E8 8AF3FFFF CALL CodeFant.00408130 ; \CodeFant.00408130
00408DA6 |. 8D45 B8 LEA EAX,[LOCAL.18]
00408DA9 |. 50 PUSH EAX ; /pPaintstruct
00408DAA |. 8B45 08 MOV EAX,[ARG.1] ; |
00408DAD |. 50 PUSH EAX ; |hWnd
00408DAE |. E8 81B9FFFF CALL <JMP.&user32.EndPaint> ; \EndPaint
00408DB3 |. E9 91010000 JMP CodeFant.00408F49
00408DB8 |> 8B45 10 MOV EAX,[ARG.3] ; Case 111 (WM_COMMAND) of switch 00408C96
00408DBB |. 2D E9030000 SUB EAX,3E9 ; Switch (cases 3E9..3EC)
00408DC0 |. 0F84 B7000000 JE CodeFant.00408E7D
00408DC6 |. 48 DEC EAX
00408DC7 |. 74 13 JE SHORT CodeFant.00408DDC
00408DC9 |. 48 DEC EAX
00408DCA |. 0F84 C6000000 JE CodeFant.00408E96
00408DD0 |. 48 DEC EAX
00408DD1 |. 0F84 CC000000 JE CodeFant.00408EA3
00408DD7 |. E9 D2000000 JMP CodeFant.00408EAE
00408DDC |> 68 FF000000 PUSH 0FF ; /Count = FF (255.); Case 3EA of switch 00408DBB
00408DE1 |. 68 9CA24000 PUSH CodeFant.0040A29C ; |Buffer = CodeFant.0040A29C
00408DE6 |. 68 F2030000 PUSH 3F2 ; |ControlID = 3F2 (1010.)
00408DEB |. 8B45 08 MOV EAX,[ARG.1] ; |
00408DEE |. 50 PUSH EAX ; |hWnd
00408DEF |. E8 68B9FFFF CALL <JMP.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
00408DF4 |. 8D45 B4 LEA EAX,[LOCAL.19]
00408F0A |. 8B1D A0B74000 MOV EBX,DWORD PTR DS:[40B7A0]
00408F10 |. EB 37 JMP SHORT CodeFant.00408F49
00408F12 |> 6A 00 PUSH 0 ; /Color = <BLACK>; Case 138 (WM_CTLCOLORSTATIC) of switch 00408C96
00408F14 |. 8B45 10 MOV EAX,[ARG.3] ; |
00408F17 |. 50 PUSH EAX ; |hDC
00408F18 |. E8 CFB7FFFF CALL <JMP.&gdi32.SetTextColor> ; \SetTextColor
00408F1D |. 6A 01 PUSH 1 ; /BkMode = TRANSPARENT
00408F1F |. 8B45 10 MOV EAX,[ARG.3] ; |
00408F22 |. 50 PUSH EAX ; |hDC
00408F23 |. E8 BCB7FFFF CALL <JMP.&gdi32.SetBkMode> ; \SetBkMode
00408F28 |. 8B1D A0B74000 MOV EBX,DWORD PTR DS:[40B7A0]
00408F2E |. EB 19 JMP SHORT CodeFant.00408F49
00408F30 |> 68 A9000000 PUSH 0A9 ; /TimerID = A9 (169.); Case 2 (WM_DESTROY) of switch 00408C96
00408F35 |. 8B45 08 MOV EAX,[ARG.1] ; |
00408F38 |. 50 PUSH EAX ; |hWnd
00408F39 |. E8 3EB8FFFF CALL <JMP.&user32.KillTimer> ; \KillTimer
00408F3E |. 6A 00 PUSH 0 ; /ExitCode = 0
00408F40 |. E8 5FB8FFFF CALL <JMP.&user32.PostQuitMessage> ; \PostQuitMessage
00408F45 |. EB 02 JMP SHORT CodeFant.00408F49
00408F47 |> 33DB XOR EBX,EBX ; Default case of switch 00408C96
00408F49 |> 33C0 XOR EAX,EAX
00408F4B |. 5A POP EDX
00408F4C |. 59 POP ECX
00408F4D |. 59 POP ECX
00408F4E |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
00408F51 |. 68 6B8F4000 PUSH CodeFant.00408F6B
00408F56 |> 8D45 A8 LEA EAX,[LOCAL.22]
00408F59 |. BA 04000000 MOV EDX,4
00408F5E |. E8 E9A6FFFF CALL CodeFant.0040364C
00408F63 \. C3 RETN
00408F64 .^ E9 E7A0FFFF JMP CodeFant.00403050
00408F69 .^ EB EB JMP SHORT CodeFant.00408F56
00408F6B . 8BC3 MOV EAX,EBX
00408F6D . 5B POP EBX
00408F6E . 8BE5 MOV ESP,EBP
00408F70 . 5D POP EBP
00408F71 . C2 1000 RETN 10
演算法總結:
ㄧ、逐位取用戶名運算後得divbo在運算後再得fkxdq載運算得in{gt
最後算出6D727F6B78
用戶名: chuan
註冊碼: 6D727F6B78
註冊成功
菜鳥初學破解,演算法分析的不周全請多予指導。
附上檔案及註冊機
【破文作者】史克威爾
【作者郵箱】squeare20012001@yafoo.com.tw
【破解工具】peid,W32Dasm,od
【破解平臺】winxp
【軟體名稱】Crackme
【保護方式】無
【軟體簡介】Crackme
------------------------------------------------------------------------
一、運行程式,找到註冊視窗進行註冊,輸入錯誤的註冊資訊按確定進行檢測,沒有任何反應
看來是必須輸入正確的註冊碼才會啟動,書住正確的註冊碼會 “跳出恭喜你註冊
二、OD載入用插件超級字串找到恭喜你註冊碼正確 點兩下跳到代碼:
00408E6D |. 68 B88F4000 PUSH CodeFant.00408FB8 恭喜您,註冊碼正確!
往上找在00408DDC下中斷點
三、輸入用戶名chuan 註冊碼123456789點確定程式被斷下
00408C70 /. 55 PUSH EBP-------程式入口
00408C71 |. 8BEC MOV EBP,ESP
00408C73 |. 83C4 A8 ADD ESP,-58
00408C76 |. 53 PUSH EBX
00408C77 |. 33C0 XOR EAX,EAX
00408C79 |. 8945 B0 MOV [LOCAL.20],EAX
00408C7C |. 8945 A8 MOV [LOCAL.22],EAX
00408C7F |. 8945 AC MOV [LOCAL.21],EAX
00408C82 |. 8945 B4 MOV [LOCAL.19],EAX
00408C85 |. 33C0 XOR EAX,EAX
00408C87 |. 55 PUSH EBP
00408C88 |. 68 648F4000 PUSH CodeFant.00408F64
00408C8D |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00408C90 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00408C93 |. 8B45 0C MOV EAX,[ARG.2]
00408C96 |. 3D 11010000 CMP EAX,111 ; Switch (cases 2..201)
00408C9B |. 7F 2D JG SHORT CodeFant.00408CCA
00408C9D |. 0F84 15010000 JE CodeFant.00408DB8
00408CA3 |. 83E8 02 SUB EAX,2
00408CA6 |. 0F84 84020000 JE CodeFant.00408F30
00408CAC |. 83E8 0D SUB EAX,0D
00408CAF |. 0F84 C5000000 JE CodeFant.00408D7A
00408CB5 |. 83E8 1C SUB EAX,1C
00408CB8 |. 0F84 F7010000 JE CodeFant.00408EB5
00408CBE |. 2D E5000000 SUB EAX,0E5
00408CC3 |. 74 2E JE SHORT CodeFant.00408CF3
00408CC5 |. E9 7D020000 JMP CodeFant.00408F47
00408CCA |> 2D 13010000 SUB EAX,113
00408CCF |. 0F84 EF010000 JE CodeFant.00408EC4
00408CD5 |. 83E8 23 SUB EAX,23
00408CD8 |. 0F84 16020000 JE CodeFant.00408EF4
00408CDE |. 83E8 02 SUB EAX,2
00408CE1 |. 0F84 2B020000 JE CodeFant.00408F12
00408CE7 |. 2D C9000000 SUB EAX,0C9
00408CEC |. 74 48 JE SHORT CodeFant.00408D36
00408CEE |. E9 54020000 JMP CodeFant.00408F47
00408CF3 |> 8B45 08 MOV EAX,[ARG.1] ; Case 110 (WM_INITDIALOG) of switch 00408C96
00408CF6 |. A3 ACB74000 MOV DWORD PTR DS:[40B7AC],EAX
00408CFB |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; /pRect = CodeFant.0040A4C8
00408D00 |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D03 |. 50 PUSH EAX ; |hWnd
00408D04 |. E8 43BAFFFF CALL <JMP.&user32.GetClientRect> ; \GetClientRect
00408D09 |. A1 CCA44000 MOV EAX,DWORD PTR DS:[40A4CC]
00408D0E |. 83C0 14 ADD EAX,14
00408D11 |. A3 D4A44000 MOV DWORD PTR DS:[40A4D4],EAX
00408D16 |. 68 748F4000 PUSH CodeFant.00408F74 ; /codefantasy系列crackme1
00408D1B |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D1E |. 50 PUSH EAX ; |hWnd
00408D1F |. E8 B8BAFFFF CALL <JMP.&user32.SetWindowTextA> ; \SetWindowTextA
00408D24 |. 8B45 08 MOV EAX,[ARG.1]
00408D27 |. E8 40F3FFFF CALL CodeFant.0040806C
00408D2C |. BB 01000000 MOV EBX,1
00408D31 |. E9 13020000 JMP CodeFant.00408F49
00408D36 |> 0FB745 14 MOVZX EAX,WORD PTR SS:[EBP+14] ; Case 201 (WM_LBUTTONDOWN) of switch 00408C96
00408D3A |. 8945 F8 MOV [LOCAL.2],EAX
00408D3D |. 8B45 14 MOV EAX,[ARG.4]
00408D40 |. E8 AFBAFFFF CALL CodeFant.004047F4
00408D45 |. 0FB7C0 MOVZX EAX,AX
00408D48 |. 8945 FC MOV [LOCAL.1],EAX
00408D4B |. FF75 FC PUSH [LOCAL.1] ; /Point.Y
00408D4E |. FF75 F8 PUSH [LOCAL.2] ; |Point.X
00408D51 |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; |pRect = 0040A4C8 {0.,0.,306.,20.}
00408D56 |. E8 51BAFFFF CALL <JMP.&user32.PtInRect> ; \PtInRect
00408D5B |. 85C0 TEST EAX,EAX
00408D5D |. 0F84 E6010000 JE CodeFant.00408F49
00408D63 |. 6A 00 PUSH 0 ; /lParam = 0
00408D65 |. 6A 02 PUSH 2 ; |wParam = 2
00408D67 |. 68 A1000000 PUSH 0A1 ; |Message = WM_NCLBUTTONDOWN
00408D6C |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D6F |. 50 PUSH EAX ; |hWnd
00408D70 |. E8 27BAFFFF CALL <JMP.&user32.PostMessageA> ; \PostMessageA
00408D75 |. E9 CF010000 JMP CodeFant.00408F49
00408D7A |> 8D45 B8 LEA EAX,[LOCAL.18] ; Case F (WM_PAINT) of switch 00408C96
00408D7D |. 50 PUSH EAX ; /pPaintstruct
00408D7E |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D81 |. 50 PUSH EAX ; |hWnd
00408D82 |. E8 6DB9FFFF CALL <JMP.&user32.BeginPaint> ; \BeginPaint
00408D87 |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; /Arg3 = 0040A4C8
00408D8C |. 68 40D9FE00 PUSH 0FED940 ; |Arg2 = 00FED940
00408D91 |. 68 0B198B00 PUSH 8B190B ; |Arg1 = 008B190B
00408D96 |. B9 948F4000 MOV ECX,CodeFant.00408F94 ; |codefantasy系列crackme1
00408D9B |. 8B15 A8B74000 MOV EDX,DWORD PTR DS:[40B7A8] ; |
00408DA1 |. E8 8AF3FFFF CALL CodeFant.00408130 ; \CodeFant.00408130
00408DA6 |. 8D45 B8 LEA EAX,[LOCAL.18]
00408DA9 |. 50 PUSH EAX ; /pPaintstruct
00408DAA |. 8B45 08 MOV EAX,[ARG.1] ; |
00408DAD |. 50 PUSH EAX ; |hWnd
00408DAE |. E8 81B9FFFF CALL <JMP.&user32.EndPaint> ; \EndPaint
00408DB3 |. E9 91010000 JMP CodeFant.00408F49
00408DB8 |> 8B45 10 MOV EAX,[ARG.3] ; Case 111 (WM_COMMAND) of switch 00408C96
00408DBB |. 2D E9030000 SUB EAX,3E9 ; Switch (cases 3E9..3EC)
00408DC0 |. 0F84 B7000000 JE CodeFant.00408E7D
00408DC6 |. 48 DEC EAX
00408DC7 |. 74 13 JE SHORT CodeFant.00408DDC
00408DC9 |. 48 DEC EAX
00408DCA |. 0F84 C6000000 JE CodeFant.00408E96
00408DD0 |. 48 DEC EAX
00408DD1 |. 0F84 CC000000 JE CodeFant.00408EA3
00408DD7 |. E9 D2000000 JMP CodeFant.00408EAE
00408DDC |> 68 FF000000 PUSH 0FF ; /Count = FF (255.); Case 3EA of switch 00408DBB-------下中斷點
00408DE1 |. 68 9CA24000 PUSH CodeFant.0040A29C ; |Buffer = CodeFant.0040A29C
00408DE6 |. 68 F2030000 PUSH 3F2 ; |ControlID = 3F2 (1010.)
00408DEB |. 8B45 08 MOV EAX,[ARG.1] ; |
00408DEE |. 50 PUSH EAX ; |hWnd
00408DEF |. E8 68B9FFFF CALL <JMP.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
00408DF4 |. 8D45 B4 LEA EAX,[LOCAL.19]
00408DF7 |. BA 9CA24000 MOV EDX,CodeFant.0040A29C -------取用戶名
00408DFC |. B9 FF000000 MOV ECX,0FF
00408E01 |. E8 6AAAFFFF CALL CodeFant.00403870
00408E06 |. 837D B4 00 CMP [LOCAL.19],0 ----比較用戶是否為空
00408E0A |. 0F84 9E000000 JE CodeFant.00408EAE-----如果沒有輸入遊戲就結束了
00408E10 |. 68 FF000000 PUSH 0FF ; /Count = FF (255.)
00408E15 |. 68 9CA34000 PUSH CodeFant.0040A39C ; |Buffer = CodeFant.0040A39C
00408E1A |. 68 F3030000 PUSH 3F3 ; |ControlID = 3F3 (1011.)
00408E1F |. 8B45 08 MOV EAX,[ARG.1] ; |
00408E22 |. 50 PUSH EAX ; |hWnd
00408E23 |. E8 34B9FFFF CALL <JMP.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
00408E28 |. 8D45 AC LEA EAX,[LOCAL.21]
00408E2B |. BA 9CA24000 MOV EDX,CodeFant.0040A29C
00408E30 |. B9 FF000000 MOV ECX,0FF
00408E35 |. E8 36AAFFFF CALL CodeFant.00403870
00408E3A |. 8B45 AC MOV EAX,[LOCAL.21]
00408E3D |. 8D55 B0 LEA EDX,[LOCAL.20]
00408E40 |. E8 23FCFFFF CALL CodeFant.00408A68----------演算法(逐一取用戶名
00408E45 |. 8B45 B0 MOV EAX,[LOCAL.20]
00408E48 |. 50 PUSH EAX
00408E49 |. 8D45 A8 LEA EAX,[LOCAL.22]
00408E4C |. BA 9CA34000 MOV EDX,CodeFant.0040A39C
00408E51 |. B9 FF000000 MOV ECX,0FF
00408E56 |. E8 15AAFFFF CALL CodeFant.00403870
00408E5B |. 8B55 A8 MOV EDX,[LOCAL.22]
00408E5E |. 58 POP EAX
00408E5F |. E8 84ABFFFF CALL CodeFant.004039E8
00408E64 |. 75 48 JNZ SHORT CodeFant.00408EAE-------關鍵朓轉(爆破點)
00408E66 |. 6A 40 PUSH 40 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL
00408E68 |. 68 AC8F4000 PUSH CodeFant.00408FAC ; |註冊提示
00408E6D |. 68 B88F4000 PUSH CodeFant.00408FB8 ; |恭喜您,註冊碼正確!
00408E72 |. 8B45 08 MOV EAX,[ARG.1] ; |
00408E75 |. 50 PUSH EAX ; |hOwner
00408E76 |. E8 19B9FFFF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
進入此call 00408E40 |. E8 23FCFFFF CALL CodeFant.00408A68
00408A68 /$ 55 PUSH EBP
00408A69 |. 8BEC MOV EBP,ESP
00408A6B |. B9 07000000 MOV ECX,7
00408A70 |> 6A 00 /PUSH 0
00408A72 |. 6A 00 |PUSH 0
00408A74 |. 49 |DEC ECX
00408A75 |.^ 75 F9 \JNZ SHORT CodeFant.00408A70
00408A77 |. 51 PUSH ECX
00408A78 |. 53 PUSH EBX
00408A79 |. 56 PUSH ESI
00408A7A |. 57 PUSH EDI
00408A7B |. 8955 F8 MOV [LOCAL.2],EDX
00408A7E |. 8945 FC MOV [LOCAL.1],EAX
00408A81 |. 8B45 FC MOV EAX,[LOCAL.1]
00408A84 |. E8 03B0FFFF CALL CodeFant.00403A8C
00408A89 |. 33C0 XOR EAX,EAX
00408A8B |. 55 PUSH EBP
00408A8C |. 68 498C4000 PUSH CodeFant.00408C49
00408A91 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00408A94 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00408A97 |. 8D45 F4 LEA EAX,[LOCAL.3]
00408A9A |. E8 89ABFFFF CALL CodeFant.00403628
00408A9F |. 8B45 FC MOV EAX,[LOCAL.1]
00408AA2 |. E8 F5ADFFFF CALL CodeFant.0040389C
00408AA7 |. 8BF8 MOV EDI,EAX
00408AA9 |. 85FF TEST EDI,EDI
00408AAB |. 7E 28 JLE SHORT CodeFant.00408AD5
00408AAD |. BE 01000000 MOV ESI,1
00408AB2 |> 8B45 FC /MOV EAX,[LOCAL.1]
00408AB5 |. 33DB |XOR EBX,EBX
00408AB7 |. 8A5C30 FF |MOV BL,BYTE PTR DS:[EAX+ESI-1]--- 逐一取用戶名
00408ABB |. 43 |INC EBX
00408ABC |. 8D45 D8 |LEA EAX,[LOCAL.10] ;用戶名給eax
00408ABF |. 8BD3 |MOV EDX,EBX
00408AC1 |. E8 2EADFFFF |CALL CodeFant.004037F4
00408AC6 |. 8B55 D8 |MOV EDX,[LOCAL.10]
00408AC9 |. 8D45 F4 |LEA EAX,[LOCAL.3]
00408ACC |. E8 D3ADFFFF |CALL CodeFant.004038A4
00408AD1 |. 46 |INC ESI
00408AD2 |. 4F |DEC EDI
00408AD3 |.^ 75 DD \JNZ SHORT CodeFant.00408AB2
00408AD5 |> 8D45 F0 LEA EAX,[LOCAL.4]
00408AD8 |. 8B55 F4 MOV EDX,[LOCAL.3]
00408ADB |. E8 E0ABFFFF CALL CodeFant.004036C0 ;運算後淂divbo
00408AE0 |. 8D45 F4 LEA EAX,[LOCAL.3]
00408AE3 |. E8 40ABFFFF CALL CodeFant.00403628
00408AE8 |. 8B45 F0 MOV EAX,[LOCAL.4]
00408AEB |. E8 ACADFFFF CALL CodeFant.0040389C
00408AF0 |. 8BF8 MOV EDI,EAX
00408AF2 |. 85FF TEST EDI,EDI
00408AF4 |. 7E 2A JLE SHORT CodeFant.00408B20
00408AF6 |. BE 01000000 MOV ESI,1
00408AFB |> 8B45 F0 /MOV EAX,[LOCAL.4]
00408AFE |. 33DB |XOR EBX,EBX
00408B00 |. 8A5C30 FF |MOV BL,BYTE PTR DS:[EAX+ESI-1] 取用戶名運算後所得之divbo運算
00408B04 |. 83C3 02 |ADD EBX,2
00408B07 |. 8D45 D4 |LEA EAX,[LOCAL.11]
00408B0A |. 8BD3 |MOV EDX,EBX
00408B0C |. E8 E3ACFFFF |CALL CodeFant.004037F4
00408B11 |. 8B55 D4 |MOV EDX,[LOCAL.11]
00408B14 |. 8D45 F4 |LEA EAX,[LOCAL.3]
00408B17 |. E8 88ADFFFF |CALL CodeFant.004038A4
00408B1C |. 46 |INC ESI
00408B1D |. 4F |DEC EDI
00408B1E |.^ 75 DB \JNZ SHORT CodeFant.00408AFB
00408B20 |> 8D45 EC LEA EAX,[LOCAL.5]
00408B23 |. 8B55 F4 MOV EDX,[LOCAL.3]--------:divbo運算得到fkxdq
00408B26 |. E8 95ABFFFF CALL CodeFant.004036C0
00408B2B |. 8D45 F4 LEA EAX,[LOCAL.3]
00408B2E |. E8 F5AAFFFF CALL CodeFant.00403628
00408B33 |. 8B45 EC MOV EAX,[LOCAL.5]
00408B36 |. E8 61ADFFFF CALL CodeFant.0040389C
00408B3B |. 8BF8 MOV EDI,EAX
00408B3D |. 85FF TEST EDI,EDI
00408B3F |. 7E 2A JLE SHORT CodeFant.00408B6B
00408B41 |. BE 01000000 MOV ESI,1
00408B46 |> 8B45 EC /MOV EAX,[LOCAL.5]
00408B49 |. 33DB |XOR EBX,EBX
00408B4B |. 8A5C30 FF |MOV BL,BYTE PTR DS:[EAX+ESI-1]
00408B4F |. 83C3 03 |ADD EBX,3 --------------;再取fkxdq運算
00408B52 |. 8D45 D0 |LEA EAX,[LOCAL.12]
00408B55 |. 8BD3 |MOV EDX,EBX
00408B57 |. E8 98ACFFFF |CALL CodeFant.004037F4
00408B5C |. 8B55 D0 |MOV EDX,[LOCAL.12]
00408B5F |. 8D45 F4 |LEA EAX,[LOCAL.3]
00408B62 |. E8 3DADFFFF |CALL CodeFant.004038A4
00408B67 |. 46 |INC ESI
00408B68 |. 4F |DEC EDI
00408B69 |.^ 75 DB \JNZ SHORT CodeFant.00408B46
00408B6B |> 8D45 E8 LEA EAX,[LOCAL.6]
00408B6E |. 8B55 F4 MOV EDX,[LOCAL.3]-----------; 運算後得到(ASCII "in{gt")
00408B71 |. E8 4AABFFFF CALL CodeFant.004036C0
00408B76 |. 8D45 F4 LEA EAX,[LOCAL.3]
00408B79 |. E8 AAAAFFFF CALL CodeFant.00403628
00408B7E |. 8B45 E8 MOV EAX,[LOCAL.6]
00408B81 |. E8 16ADFFFF CALL CodeFant.0040389C
00408B86 |. 8BF8 MOV EDI,EAX
00408B88 |. 85FF TEST EDI,EDI
00408B8A |. 7E 2A JLE SHORT CodeFant.00408BB6
00408B8C |. BE 01000000 MOV ESI,1
00408B91 |> 8B45 E8 /MOV EAX,[LOCAL.6]
00408B94 |. 33DB |XOR EBX,EBX
00408B96 |. 8A5C30 FF |MOV BL,BYTE PTR DS:[EAX+ESI-1]-------; in{gt再運算
00408B9A |. 83C3 04 |ADD EBX,4
00408B9D |. 8D45 CC |LEA EAX,[LOCAL.13]
00408BA0 |. 8BD3 |MOV EDX,EBX
00408BA2 |. E8 4DACFFFF |CALL CodeFant.004037F4
00408BA7 |. 8B55 CC |MOV EDX,[LOCAL.13]
00408BAA |. 8D45 F4 |LEA EAX,[LOCAL.3]
00408BAD |. E8 F2ACFFFF |CALL CodeFant.004038A4
00408BB2 |. 46 |INC ESI
00408BB3 |. 4F |DEC EDI
00408BB4 |.^ 75 DB \JNZ SHORT CodeFant.00408B91
00408BB6 |> 8D45 E4 LEA EAX,[LOCAL.7]
00408BB9 |. E8 6AAAFFFF CALL CodeFant.00403628
00408BBE |. 8B45 F4 MOV EAX,[LOCAL.3]
00408BC1 |. E8 D6ACFFFF CALL CodeFant.0040389C
00408BC6 |. 8BF8 MOV EDI,EAX
00408BC8 |. 4F DEC EDI
00408BC9 |. 85FF TEST EDI,EDI
00408BCB |. 7C 4E JL SHORT CodeFant.00408C1B
00408BCD |. 47 INC EDI
00408BCE |. 33F6 XOR ESI,ESI
00408BD0 |> 8D45 DC /LEA EAX,[LOCAL.9]
00408BD3 |. 50 |PUSH EAX ; /Arg1
00408BD4 |. 8B45 F4 |MOV EAX,[LOCAL.3] ; |
00408BD7 |. 0FB60430 |MOVZX EAX,BYTE PTR DS:[EAX+ESI] ; |
00408BDB |. 8945 C4 |MOV [LOCAL.15],EAX ; |
00408BDE |. C645 C8 00 |MOV BYTE PTR SS:[EBP-38],0 ; |
00408BE2 |. 8D55 C4 |LEA EDX,[LOCAL.15] ; |
00408BE5 |. 33C9 |XOR ECX,ECX ; |
00408BE7 |. B8 608C4000 |MOV EAX,CodeFant.00408C60 ; |ASCII "%x"
00408BEC |. E8 1FD1FFFF |CALL CodeFant.00405D10 ; \CodeFant.00405D10
00408BF1 |. 8B45 DC |MOV EAX,[LOCAL.9]
00408BF4 |. E8 A3ACFFFF |CALL CodeFant.0040389C
00408BF9 |. 48 |DEC EAX
00408BFA |. 75 10 |JNZ SHORT CodeFant.00408C0C
00408BFC |. 8D45 DC |LEA EAX,[LOCAL.9]
00408BFF |. 8B4D DC |MOV ECX,[LOCAL.9]
00408C02 |. BA 6C8C4000 |MOV EDX,CodeFant.00408C6C
00408C07 |. E8 DCACFFFF |CALL CodeFant.004038E8
00408C0C |> 8D45 E0 |LEA EAX,[LOCAL.8]
00408C0F |. 8B55 DC |MOV EDX,[LOCAL.9]
00408C12 |. E8 8DACFFFF |CALL CodeFant.004038A4
00408C17 |. 46 |INC ESI
00408C18 |. 4F |DEC EDI
00408C19 |.^ 75 B5 \JNZ SHORT CodeFant.00408BD0
00408C1B |> 8B45 F8 MOV EAX,[LOCAL.2]
00408C1E |. 8B55 E0 MOV EDX,[LOCAL.8]
00408C21 |. E8 56AAFFFF CALL CodeFant.0040367C------------記憶體註冊機
00408C26 |. 33C0 XOR EAX,EAX
00408C28 |. 5A POP EDX
00408C29 |. 59 POP ECX
00408C2A |. 59 POP ECX
00408C2B |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
00408C2E |. 68 508C4000 PUSH CodeFant.00408C50
00408C33 |> 8D45 CC LEA EAX,[LOCAL.13]
00408C36 |. BA 0B000000 MOV EDX,0B
00408C3B |. E8 0CAAFFFF CALL CodeFant.0040364C
00408C40 |. 8D45 FC LEA EAX,[LOCAL.1]
00408C43 |. E8 E0A9FFFF CALL CodeFant.00403628
00408C48 \. C3 RETN
00408C49 .^\E9 02A4FFFF JMP CodeFant.00403050
00408C4E .^ EB E3 JMP SHORT CodeFant.00408C33
00408C50 . 5F POP EDI
00408C51 . 5E POP ESI
00408C52 . 5B POP EBX
00408C53 . 8BE5 MOV ESP,EBP
00408C55 . 5D POP EBP
00408C56 . C3 RETN
00408C57 00 DB 00
00408C58 . FFFFFFFF DD FFFFFFFF
00408C5C . 02000000 DD 00000002
00408C60 . 25 78 00 ASCII "%x",0
00408C63 00 DB 00
00408C64 . FFFFFFFF DD FFFFFFFF
00408C68 . 01000000 DD 00000001
00408C6C . 30 00 ASCII "0",0
00408C6E 00 DB 00
00408C6F 00 DB 00
00408C70 /. 55 PUSH EBP
00408C71 |. 8BEC MOV EBP,ESP
00408C73 |. 83C4 A8 ADD ESP,-58
00408C76 |. 53 PUSH EBX
00408C77 |. 33C0 XOR EAX,EAX
00408C79 |. 8945 B0 MOV [LOCAL.20],EAX
00408C7C |. 8945 A8 MOV [LOCAL.22],EAX
00408C7F |. 8945 AC MOV [LOCAL.21],EAX
00408C82 |. 8945 B4 MOV [LOCAL.19],EAX
00408C85 |. 33C0 XOR EAX,EAX
00408C87 |. 55 PUSH EBP
00408C88 |. 68 648F4000 PUSH CodeFant.00408F64
00408C8D |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00408C90 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00408C93 |. 8B45 0C MOV EAX,[ARG.2]
00408C96 |. 3D 11010000 CMP EAX,111 ; Switch (cases 2..201)
00408C9B |. 7F 2D JG SHORT CodeFant.00408CCA
00408C9D |. 0F84 15010000 JE CodeFant.00408DB8
00408CA3 |. 83E8 02 SUB EAX,2
00408CA6 |. 0F84 84020000 JE CodeFant.00408F30
00408CAC |. 83E8 0D SUB EAX,0D
00408CAF |. 0F84 C5000000 JE CodeFant.00408D7A
00408CB5 |. 83E8 1C SUB EAX,1C
00408CB8 |. 0F84 F7010000 JE CodeFant.00408EB5
00408CBE |. 2D E5000000 SUB EAX,0E5
00408CC3 |. 74 2E JE SHORT CodeFant.00408CF3
00408CC5 |. E9 7D020000 JMP CodeFant.00408F47
00408CCA |> 2D 13010000 SUB EAX,113
00408CCF |. 0F84 EF010000 JE CodeFant.00408EC4
00408CD5 |. 83E8 23 SUB EAX,23
00408CD8 |. 0F84 16020000 JE CodeFant.00408EF4
00408CDE |. 83E8 02 SUB EAX,2
00408CE1 |. 0F84 2B020000 JE CodeFant.00408F12
00408CE7 |. 2D C9000000 SUB EAX,0C9
00408CEC |. 74 48 JE SHORT CodeFant.00408D36
00408CEE |. E9 54020000 JMP CodeFant.00408F47
00408CF3 |> 8B45 08 MOV EAX,[ARG.1] ; Case 110 (WM_INITDIALOG) of switch 00408C96
00408CF6 |. A3 ACB74000 MOV DWORD PTR DS:[40B7AC],EAX
00408CFB |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; /pRect = CodeFant.0040A4C8
00408D00 |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D03 |. 50 PUSH EAX ; |hWnd
00408D04 |. E8 43BAFFFF CALL <JMP.&user32.GetClientRect> ; \GetClientRect
00408D09 |. A1 CCA44000 MOV EAX,DWORD PTR DS:[40A4CC]
00408D0E |. 83C0 14 ADD EAX,14
00408D11 |. A3 D4A44000 MOV DWORD PTR DS:[40A4D4],EAX
00408D16 |. 68 748F4000 PUSH CodeFant.00408F74 ; /Text = "CodeFantasy炵蹈CrackMe1"
00408D1B |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D1E |. 50 PUSH EAX ; |hWnd
00408D1F |. E8 B8BAFFFF CALL <JMP.&user32.SetWindowTextA> ; \SetWindowTextA
00408D24 |. 8B45 08 MOV EAX,[ARG.1]
00408D27 |. E8 40F3FFFF CALL CodeFant.0040806C
00408D2C |. BB 01000000 MOV EBX,1
00408D31 |. E9 13020000 JMP CodeFant.00408F49
00408D36 |> 0FB745 14 MOVZX EAX,WORD PTR SS:[EBP+14] ; Case 201 (WM_LBUTTONDOWN) of switch 00408C96
00408D3A |. 8945 F8 MOV [LOCAL.2],EAX
00408D3D |. 8B45 14 MOV EAX,[ARG.4]
00408D40 |. E8 AFBAFFFF CALL CodeFant.004047F4
00408D45 |. 0FB7C0 MOVZX EAX,AX
00408D48 |. 8945 FC MOV [LOCAL.1],EAX
00408D4B |. FF75 FC PUSH [LOCAL.1] ; /Point.Y
00408D4E |. FF75 F8 PUSH [LOCAL.2] ; |Point.X
00408D51 |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; |pRect = 0040A4C8 {0.,0.,306.,20.}
00408D56 |. E8 51BAFFFF CALL <JMP.&user32.PtInRect> ; \PtInRect
00408D5B |. 85C0 TEST EAX,EAX
00408D5D |. 0F84 E6010000 JE CodeFant.00408F49
00408D63 |. 6A 00 PUSH 0 ; /lParam = 0
00408D65 |. 6A 02 PUSH 2 ; |wParam = 2
00408D67 |. 68 A1000000 PUSH 0A1 ; |Message = WM_NCLBUTTONDOWN
00408D6C |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D6F |. 50 PUSH EAX ; |hWnd
00408D70 |. E8 27BAFFFF CALL <JMP.&user32.PostMessageA> ; \PostMessageA
00408D75 |. E9 CF010000 JMP CodeFant.00408F49
00408D7A |> 8D45 B8 LEA EAX,[LOCAL.18] ; Case F (WM_PAINT) of switch 00408C96
00408D7D |. 50 PUSH EAX ; /pPaintstruct
00408D7E |. 8B45 08 MOV EAX,[ARG.1] ; |
00408D81 |. 50 PUSH EAX ; |hWnd
00408D82 |. E8 6DB9FFFF CALL <JMP.&user32.BeginPaint> ; \BeginPaint
00408D87 |. 68 C8A44000 PUSH CodeFant.0040A4C8 ; /Arg3 = 0040A4C8
00408D8C |. 68 40D9FE00 PUSH 0FED940 ; |Arg2 = 00FED940
00408D91 |. 68 0B198B00 PUSH 8B190B ; |Arg1 = 008B190B
00408D96 |. B9 948F4000 MOV ECX,CodeFant.00408F94 ; |
00408D9B |. 8B15 A8B74000 MOV EDX,DWORD PTR DS:[40B7A8] ; |
00408DA1 |. E8 8AF3FFFF CALL CodeFant.00408130 ; \CodeFant.00408130
00408DA6 |. 8D45 B8 LEA EAX,[LOCAL.18]
00408DA9 |. 50 PUSH EAX ; /pPaintstruct
00408DAA |. 8B45 08 MOV EAX,[ARG.1] ; |
00408DAD |. 50 PUSH EAX ; |hWnd
00408DAE |. E8 81B9FFFF CALL <JMP.&user32.EndPaint> ; \EndPaint
00408DB3 |. E9 91010000 JMP CodeFant.00408F49
00408DB8 |> 8B45 10 MOV EAX,[ARG.3] ; Case 111 (WM_COMMAND) of switch 00408C96
00408DBB |. 2D E9030000 SUB EAX,3E9 ; Switch (cases 3E9..3EC)
00408DC0 |. 0F84 B7000000 JE CodeFant.00408E7D
00408DC6 |. 48 DEC EAX
00408DC7 |. 74 13 JE SHORT CodeFant.00408DDC
00408DC9 |. 48 DEC EAX
00408DCA |. 0F84 C6000000 JE CodeFant.00408E96
00408DD0 |. 48 DEC EAX
00408DD1 |. 0F84 CC000000 JE CodeFant.00408EA3
00408DD7 |. E9 D2000000 JMP CodeFant.00408EAE
00408DDC |> 68 FF000000 PUSH 0FF ; /Count = FF (255.); Case 3EA of switch 00408DBB
00408DE1 |. 68 9CA24000 PUSH CodeFant.0040A29C ; |Buffer = CodeFant.0040A29C
00408DE6 |. 68 F2030000 PUSH 3F2 ; |ControlID = 3F2 (1010.)
00408DEB |. 8B45 08 MOV EAX,[ARG.1] ; |
00408DEE |. 50 PUSH EAX ; |hWnd
00408DEF |. E8 68B9FFFF CALL <JMP.&user32.GetDlgItemTextA> ; \GetDlgItemTextA
00408DF4 |. 8D45 B4 LEA EAX,[LOCAL.19]
00408F0A |. 8B1D A0B74000 MOV EBX,DWORD PTR DS:[40B7A0]
00408F10 |. EB 37 JMP SHORT CodeFant.00408F49
00408F12 |> 6A 00 PUSH 0 ; /Color = <BLACK>; Case 138 (WM_CTLCOLORSTATIC) of switch 00408C96
00408F14 |. 8B45 10 MOV EAX,[ARG.3] ; |
00408F17 |. 50 PUSH EAX ; |hDC
00408F18 |. E8 CFB7FFFF CALL <JMP.&gdi32.SetTextColor> ; \SetTextColor
00408F1D |. 6A 01 PUSH 1 ; /BkMode = TRANSPARENT
00408F1F |. 8B45 10 MOV EAX,[ARG.3] ; |
00408F22 |. 50 PUSH EAX ; |hDC
00408F23 |. E8 BCB7FFFF CALL <JMP.&gdi32.SetBkMode> ; \SetBkMode
00408F28 |. 8B1D A0B74000 MOV EBX,DWORD PTR DS:[40B7A0]
00408F2E |. EB 19 JMP SHORT CodeFant.00408F49
00408F30 |> 68 A9000000 PUSH 0A9 ; /TimerID = A9 (169.); Case 2 (WM_DESTROY) of switch 00408C96
00408F35 |. 8B45 08 MOV EAX,[ARG.1] ; |
00408F38 |. 50 PUSH EAX ; |hWnd
00408F39 |. E8 3EB8FFFF CALL <JMP.&user32.KillTimer> ; \KillTimer
00408F3E |. 6A 00 PUSH 0 ; /ExitCode = 0
00408F40 |. E8 5FB8FFFF CALL <JMP.&user32.PostQuitMessage> ; \PostQuitMessage
00408F45 |. EB 02 JMP SHORT CodeFant.00408F49
00408F47 |> 33DB XOR EBX,EBX ; Default case of switch 00408C96
00408F49 |> 33C0 XOR EAX,EAX
00408F4B |. 5A POP EDX
00408F4C |. 59 POP ECX
00408F4D |. 59 POP ECX
00408F4E |. 64:8910 MOV DWORD PTR FS:[EAX],EDX
00408F51 |. 68 6B8F4000 PUSH CodeFant.00408F6B
00408F56 |> 8D45 A8 LEA EAX,[LOCAL.22]
00408F59 |. BA 04000000 MOV EDX,4
00408F5E |. E8 E9A6FFFF CALL CodeFant.0040364C
00408F63 \. C3 RETN
00408F64 .^ E9 E7A0FFFF JMP CodeFant.00403050
00408F69 .^ EB EB JMP SHORT CodeFant.00408F56
00408F6B . 8BC3 MOV EAX,EBX
00408F6D . 5B POP EBX
00408F6E . 8BE5 MOV ESP,EBP
00408F70 . 5D POP EBP
00408F71 . C2 1000 RETN 10
演算法總結:
ㄧ、逐位取用戶名運算後得divbo在運算後再得fkxdq載運算得in{gt
最後算出6D727F6B78
用戶名: chuan
註冊碼: 6D727F6B78
註冊成功
菜鳥初學破解,演算法分析的不周全請多予指導。
附上檔案及註冊機
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
赞赏
他的文章
- 算法思路 值得大家讨论研究 1835
- [分享] 幸運66軟體算法分析 6208
- [求助]无按鈕触发無訊息提示軟件如何破解 5292
- 無按鈕觸發 無訊息提示如何分析 3529
- [求助]要如何寫註冊機 3236
看原图
赞赏
雪币:
留言: