溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

CrackMe 分析

發(fā)布時間:2020-07-03 18:07:18 來源:網絡 閱讀:958 作者:不怕小貓咪 欄目:安全技術

0x00 流程分析


CrackMe 分析

CrackMe 分析

CrackMe 分析

CrackMe 分析

CrackMe 分析

CrackMe 分析

CrackMe 分析

CrackMe 分析

CrackMe 分析



提示輸入帳號密碼


圖片2


回車后 提示 需要重新輸入

載入OD

圖片3


字符串搜索

main函數


圖片4


此時停在 00401060這里,是個

00401060  /$  83EC 30       sub esp,0x30 //分配棧幀

00401063  |.  68 FC804000   push Crackme.004080FC   ;  input your name:

00401068  |.  E8 6C020000   call Crackme.004012D9// printf

0040106D  |.  8D4424 1C     lea eax,dword ptr ss:[esp+0x1C]    

00401071  |.  50            push eax

00401072  |.  68 F8804000   push Crackme.004080F8     ;  %s

00401077  |.  E8 46020000   call Crackme.004012C2

0040107C  |.  68 E4804000   push Crackme.004080E4       ;  input your pass:

00401081  |.  E8 53020000   call Crackme.004012D9// scanf

00401086  |.  8D4C24 10     lea ecx,dword ptr ss:[esp+0x10]   

0040108A  |.  51            push ecx

0040108B  |.  68 F8804000   push Crackme.004080F8    ;  %s

00401090  |.  E8 2D020000   call Crackme.004012C2       ;  scanf()

00401095  |.  8D5424 18     lea edx,dword ptr ss:[esp+0x18]     ;  edx存放帳號地址

00401099  |.  8D4424 30     lea eax,dword ptr ss:[esp+0x30]     ;  eax存放密碼地址

0040109D  |.  52            push edx

0040109E  |.  50            push eax

0040109F  |.  E8 5CFFFFFF   call Crackme.00401000//call 參數為兩個地址 edx eax

004010A4  |.  83C4 20       add esp,0x20// 平衡堆棧

004010A7  |.  84C0          test al,al//al則 zf = 1 je成立

004010A9  |.  74 19         je XCrackme.004010C4  //這里會跳到一個提示try again

 

圖片5


這里是提示正確or錯誤的地方

004010A9  |. /74 19         je XCrackme.004010C4

004010AB  |. |68 D8804000   push Crackme.004080D8   ;  good job!\n

004010B0  |. |E8 24020000   call Crackme.004012D9

004010B5  |. |68 C0804000   push Crackme.004080C0   ;  the key is: md5(pass)

004010BA  |. |E8 1A020000   call Crackme.004012D9

004010BF  |. |83C4 08       add esp,0x8

004010C2  |. |EB 0D         jmp XCrackme.004010D1

004010C4  |> \68 B4804000   push Crackme.004080B4   ;  try again!

004010C9  |.  E8 0B020000   call Crackme.004012D9

 

0x01 驗證函數分析

入口點

0040109F  |.  E8 5CFFFFFF   call Crackme.00401000         //驗證函數

 

00401000  /$  55            push ebp

00401001  |.  56            push esi

00401002  |.  8B7424 0C     mov esi,dword ptr ss:[esp+0xC]  ;  參數一

00401006  |.  57            push edi

00401007  |.  8BFE          mov edi,esi

00401009  |.  83C9 FF       or ecx,0xFFFFFFFF

0040100C  |.  33C0          xor eax,eax

0040100E  |.  8B5424 14     mov edx,dword ptr ss:[esp+0x14]  ;  參數二

00401012  |.  F2:AE         repne scas byte ptr es:[edi]   ;  長度

00401014  |.  F7D1          not ecx

00401016  |.  49            dec ecx

00401017  |.  8BFA          mov edi,edx     ;  edi存放密碼地址

00401019  |.  8BE9          mov ebp,ecx      ;  ebp存放帳號長度

0040101B  |.  83C9 FF       or ecx,0xFFFFFFFF

0040101E  |.  F2:AE         repne scas byte ptr es:[edi]

00401020  |.  F7D1          not ecx

00401022  |.  49            dec ecx    ;  密碼長度

00401023  |.  3BE9          cmp ebp,ecx          ;  長度比較

00401025  |.  74 06         je XCrackme.0040102D    ;  長度相等繼續(xù) 不等退出

00401027  |.  5F            pop edi

00401028  |.  5E            pop esi

00401029  |.  32C0          xor al,al

0040102B  |.  5D            pop ebp

0040102C  |.  C3            retn

0040102D  |>  33C0          xor eax,eax

0040102F  |.  85ED          test ebp,ebp

00401031  |.  7E 19         jle XCrackme.0040104C

00401033  |.  53            push ebx

00401034  |.  BF 30804000   mov edi,Crackme.00408030  ;  全局變量 使用edi存放數組首地址

00401039  |>  8A0F          /mov cl,byte ptr ds:[edi]   ;  cl= [edi+eax]

0040103B  |.  8A1C10        |mov bl,byte ptr ds:[eax+edx]   ;  bl=密碼地址+eax

0040103E  |.  32D9          |xor bl,cl      ;  密碼=密碼xor 數組[eax]

00401040  |.  83C7 04       |add edi,0x4       ;  下一個元素

00401043  |.  881C10        |mov byte ptr ds:[eax+edx],bl

00401046  |.  40            |inc eax         ;  eax++

00401047  |.  3BC5          |cmp eax,ebp       ;  eax < strlen(密碼)

00401049  |.^ 7C EE         \jl XCrackme.00401039    ;  eax < ebp

0040104B  |.  5B            pop ebx

0040104C  |>  8BFA          mov edi,edx

0040104E  |.  8BCD          mov ecx,ebp

00401050  |.  33D2          xor edx,edx

00401052  |.  F3:A6         repe cmps byte ptr es:[edi],byte ptr ds:[esi]

00401054  |.  8BC2          mov eax,edx

00401056  |.  5F            pop edi

00401057  |.  5E            pop esi

00401058  |.  5D            pop ebp

00401059  |.  0F94C0        sete al//相等 al = 1

0040105C  \.  C3            retn

 

加密用的table 



圖片6

 

首先判斷帳號密碼長度是否相等


圖片7


若長度相等,則首先將 密碼中的各個元素與 00408030處的數 xor 操作,得到當前密碼,

然后將密碼與帳號進行比較


圖片8


esi存放的是帳號 edi為密碼

sete zf = 1 al = 1


圖片9


這樣就過了。


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI