系统 : Windows xp

程序 : abexcrackme3

程序下载地址 :http://pan.baidu.com/s/1mh3TiqO

要求 : 伪造Keyfile

使用工具 :IDA

可在看雪论坛中查找关于此程序的破文:http://bbs.pediy.com/showthread.php?t=30192

 

IDA载入程序,找出提示破解成功的字串“Yep, keyfile found!”并定位关键代码:

CODE:00401000 ; =============== S U B R O U T I N E =======================================
CODE:00401000
CODE:00401000 ; Attributes: noreturn
CODE:00401000
CODE:00401000                 public start
CODE:00401000 start           proc near
CODE:00401000                 push    0               ; uType
CODE:00401002                 push    offset Caption  ; "abex' 3rd crackme"
CODE:00401007                 push    offset Text     ; "Click OK to check for the keyfile."
CODE:0040100C                 push    0               ; hWnd
CODE:0040100E                 call    MessageBoxA
CODE:00401013                 push    0               ; hTemplateFile
CODE:00401015                 push    80h             ; dwFlagsAndAttributes
CODE:0040101A                 push    3               ; dwCreationDisposition
CODE:0040101C                 push    0               ; lpSecurityAttributes
CODE:0040101E                 push    0               ; dwShareMode
CODE:00401020                 push    80000000h       ; dwDesiredAccess
CODE:00401025                 push    offset FileName ; "abex.l2c"
CODE:0040102A                 call    CreateFileA
CODE:0040102F                 mov     ds:hFile, eax
CODE:00401034                 cmp     eax, 0FFFFFFFFh
CODE:00401037                 jz      short loc_401075
CODE:00401039                 push    0               ; lpFileSizeHigh
CODE:0040103B                 push    ds:hFile        ; hFile
CODE:00401041                 call    GetFileSize
CODE:00401046                 cmp     eax, 12h
CODE:00401049                 jnz     short loc_401060
CODE:0040104B                 push    0               ; uType
CODE:0040104D                 push    offset aWellDone ; "Well done!"
CODE:00401052                 push    offset aYepKeyfileFoun ; "Yep, keyfile found!"
CODE:00401057                 push    0               ; hWnd
CODE:00401059                 call    MessageBoxA
CODE:0040105E                 jmp     short loc_401088
CODE:00401060 ; ---------------------------------------------------------------------------
CODE:00401060
CODE:00401060 loc_401060:                             ; CODE XREF: start+49j
CODE:00401060                 push    0               ; uType
CODE:00401062                 push    offset aError   ; "Error"
CODE:00401067                 push    offset aTheFoundFileIs ; "The found file is not a valid keyfile!"
CODE:0040106C                 push    0               ; hWnd
CODE:0040106E                 call    MessageBoxA
CODE:00401073                 jmp     short loc_401088
CODE:00401075 ; ---------------------------------------------------------------------------
CODE:00401075
CODE:00401075 loc_401075:                             ; CODE XREF: start+37j
CODE:00401075                 push    0               ; uType
CODE:00401077                 push    offset aError_0 ; "Error"
CODE:0040107C                 push    offset aHmmmmmICanTFin ; "Hmmmmm, I can't find the file!"
CODE:00401081                 push    0               ; hWnd
CODE:00401083                 call    MessageBoxA
CODE:00401088
CODE:00401088 loc_401088:                             ; CODE XREF: start+5Ej
CODE:00401088                                         ; start+73j
CODE:00401088                 call    ExitProcess
CODE:00401088 start           endp ; sp-analysis failed
CODE:00401088

程序查找一个Keyfile,文件名为“abex.l2c”,文件长度应为18字节,这样就可以通过验证。在abexcrackme3程序路径下新建文件,文件名为“abex.l2c”,用记事本打开并将内容设置为“012345678901234567”再运行abexcrackme3即可通过验证: