xx學OD -- 字符參考

OD字符參考

人家牽着手   一步一步跟人家走。。。

主要是爲了熟悉OD的功能重點不是破解(目前)

學習字符參考個人理解 就是在反彙編程序中找需要破解的軟件上出現的字符串比如輸入註冊碼錯誤了會彈出MessageBox提示你什麼什麼的。。等等.. 找到這個字符在的位置後在其前前後後會找到需要輸入註冊碼的地方斷下分析即可

有個簡單的小軟件拿來實驗CFF Crackme #3,採用用戶名/序列號保護方式如下

wKioL1MFcD-gv3qLAADt9b6Pkw0387.jpg


很簡單輸入正確的用戶名序列號即提示你success否則彈框

wKioL1MFcFOz3XaAAABJkl8dL0c919.jpg

我們就從這個錯誤對話框中顯示的“Wrong Serial, try again!”來入手。。

將軟件放進OD程序停在入口處

00441270 > $  55            PUSH EBP

00441271   .  8BEC          MOV  EBP,  ESP


此時在反彙編窗口中 右擊  然後 查找->所有參考文本字串  出來另一個對話框,我們在這個對話框裏右擊,選擇“查找文本”,輸入“Wrong Serial, try again!”的開頭單詞“Wrong”(注意這裏查找內容要區分大小寫)來查找,找到一處:

wKioL1MFcGjhEawmAAGZIwKLLuM888.jpg

在在找到的字符行上右擊選擇反彙編窗口中跟隨即來到反彙編程序相應的指令處

或者直接Enter也可。現在是查到一處可能還有其他的參考,這時在反彙編程序中對應的那行上右擊選擇查找參考->立即數,即會出現。。這裏出現了兩處就是說用戶名和序列號是分開檢驗的哪個不正確會跳到各自的“Wrong Serial, try again!”處


現在找到了如果輸入錯誤的用戶名或序列號後跳到的地方.看其代碼分析是從哪裏跳轉過來的即可

這兩個Wrong Serial, try again!是這樣的

wKiom1MFcKChNXlRAAOfeMpND9E644.jpg

圖中分析地址即可看出跳轉的脈絡


看push 得知是在00440F51  |.  E8 D62BFCFF   CALL CrackMe3.00403B2C

這句指令後 如果ZF不等於0 則跳到“Wrong Serial, try again!”

很明顯CALL CrackMe3.00403B2C 這裏一定是call到一個地方 比較去了 所以

一定要F7(步入)進去 分析 不要F8(步過)

注意這裏指令前邊的箭頭 指向什麼方向就是向什麼方向跳

現在就可以下斷點 分析一下程序了 在第一個要跳到Wrong的位置  即判斷用戶名的Call

即00440F34地址處。。下斷點F2. 接着按F9運行程序 即在此斷點處斷下F7進去 分析即可 記住一定要F7 分析程序 即關注寄存器的變化 得知我們輸入的用戶名是跟Registered User 進行比較的 。所以用戶名即知

同理 分析 序列號 得知 正確序列號爲"GFX-754-IER-954"  有一特點在這裏


地址00440F51 處的CALL CrackMe3.00403B2C 和上面我們分析的

地址00440F34 處的CALL CrackMe3.00403B2C的彙編指令是一樣的

這說明檢測用戶名和註冊碼是用的同一個子程序。而這個子程序CALL 我們在上面已經分析過了。我們執行到現在可以很容易得出結論,這個CALL 也就是把我們輸入的註冊碼與00440F4C 地址處指令後的“GFX-754-IER-954”作比較,相等則OK。


好了

現在我們在菜單 查看->斷點,打開斷點窗口(也可以通過ALT+B 或點擊工具欄上那個“B”圖標):在這裏可以對所有斷點進行操作  這裏主要是爲了保險一點,先不刪除 萬一分析錯誤,我們還要接着分析,要是把斷點刪除了就要做一些重複工作了。所以先禁用一下,如果經過實際驗證證明我們的分析是正確的,再刪不遲。現在我們把斷點禁用,在OllyDBG 中按F9 鍵讓程序運行。輸入我們經分析得出的內容:

用戶名:Registered User

註冊碼:GFX-754-IER-954

點擊“Register now !”按鈕,額 成功了….

wKioL1MFcIqTmZNfAADqel4UhLk106.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章