crackme
光盤加密
OllyDbg v1.10b
沒有
XP SP2
這篇文章是專門給菜鳥看的,高手莫笑,本人的能力也很有限,所以只能寫出這樣的文章,不要笑我.
有什么不明的可以下面帖出.
這帖子破解的是一個crackme.主要是真正的軟件我破解不了^_^.
這里把暴力破解的原理講解一下.
if qqq=1 then
注冊正確
end if
這里用這個語句來說明一下,
如果QQ=1的話注冊正確,但是我們可以使條件變成相反的變成
if not qqq=1 then
注冊正確
end if
這樣我們就可以使用不正確的注冊碼,而用正確的注冊碼凡爾不正確。因為我們的條件去反了。
這就是爆破的基本原理
這里給主一些經常見到的跳轉
Jc 有進位則跳轉 jnc 無進位則跳轉
Jz 為 0 跳轉 jnz 不為0跳轉
Je 等于則跳轉 jne 不等于則跳轉
Js 為負號則跳轉 jns 不為負號則跳轉
Jo 有溢出則跳轉 jno 無溢出則跳轉
Jp 奇偶位為偶 jnp 奇偶位為奇
好了,現在開始我們的爆破旅程^_^
先用OllyDbg v1.10b載入unabexcm1.exe
然后看到一下代碼
00401000 u>/$ 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL
00401002 |. 68 00204000 push unabexcr.00402000 ; |Title = "abex" 3rd crackme"
00401007 |. 68 12204000 push unabexcr.00402012 ; |Text = "Click OK to check for the keyfile."
0040100C |. 6A 00 push 0 ; |hOwner = NULL
0040100E |. E8 8C000000 call
00401013 |. 6A 00 push 0 ; /hTemplateFile = NULL
00401015 |. 68 80000000 push 80 ; |Attributes = NORMAL
0040101A |. 6A 03 push 3 ; |Mode = OPEN_EXISTING
0040101C |. 6A 00 push 0 ; |pSecurity = NULL
0040101E |. 6A 00 push 0 ; |ShareMode = 0
00401020 |. 68 00000080 push 80000000 ; |Access = GENERIC_READ
00401025 |. 68 B9204000 push unabexcr.004020B9 ; |FileName = "abex.l2c"
是不是看不懂?不用管他,按F9繼續執行點擊確定之后提示Hmmmmm,I can't find the file!記下來后面有用
然后在匯編代碼上右擊選擇搜索->字符參考.
過一會看到一堆字符,找到Hmmmmm,I can't find the file!雙擊
來到這里
00401034 |. 83F8 FF cmp eax,-1 -----------------------
00401037 |. 74 3C je short unabexcr.00401075<-----|---看到這個跳轉了么? |
00401039 |. 6A 00 push 0 | 他會先檢查是否 |
0040103B |. FF35 CA204000 push dword ptr ds:[4020CA] | 有光盤,如果沒有就跳轉到錯誤提示
00401041 |. E8 4D000000 call
00401046 |. 83F8 12 cmp eax,12 | 文件錯誤的提示使因為
00401049 |. 75 15 jnz short unabexcr.00401060 |<--這個跳轉的原因,他會比較文件是否
0040104B |. 6A 00 push 0 | 正確,如果不正確就會跳轉到文件錯
0040104D |. 68 35204000 push unabexcr.00402035 | 誤的提示-------------------------
00401052 |. 68 40204000 push unabexcr.00402040 | 我們把他改為jz就可以完美爆破 |
00401057 |. 6A 00 push 0 | ; |hOwner = NULL |
00401059 |. E8 41000000 call
0040105E |. EB 28 jmp short unabexcr.00401088 | |
00401060 |> 6A 00 push 0 | ; /Style = MB_OK|MB_APPLMODAL<-(2)
00401062 |. 68 79204000 push unabexcr.00402079 | ; |Title = "Error"
00401067 |. 68 7F204000 push unabexcr.0040207F | ; |Text = "The found file is not a valid keyfile!"
0040106C |. 6A 00 push 0 | ; |hOwner = NULL
0040106E |. E8 2C000000 call
00401073 |. EB 13 jmp short unabexcr.00401088 |
00401075 |> 6A 00 push 0 (1)->; |/Style = MB_OK|MB_APPLMODAL
00401077 |. 68 54204000 push unabexcr.00402054 ; ||Title = "Error"
0040107C |. 68 5A204000 push unabexcr.0040205A ; ||Text = "Hmmmmm, I can't find the file!"
00401081 |. 6A 00 push 0 ; ||hOwner = NULL
00401083 |. E8 17000000 call
00401088 \> E8 0C000000 call
----------------------------------------------------------------------------------------------
把整個思路概括一下.
軟件先檢查光驅是否有光盤,如果沒有提示沒有光盤,改跳轉使之去反,提示文件錯誤,改跳轉使之去反,爆破成功^_^
寫成程序的格式
if 光驅有光盤 then
if 光盤上的文件正確 then
成功執行
else
提示文件錯誤
end if
else
提示沒有放入光盤
end if
改變后
if 光驅沒有光盤 then
if 光盤上的文件不正確 then
成功執行
else
提示文件錯誤
end if
else
提示沒有放入光盤
end if
寫的有些簡單,但是一些基本的東西還是出來了,希望大家可以看明白,后面還有一個crackme,希望你可以自己暴破.
切記不要就此不前,只會爆破,下片帖子我會貼出怎么追出注冊碼.


