做者:逆向驛站
微信公衆號:逆向驛站
知乎:逆向驛站
html
CrackMe005,上篇說了具體方法,下篇來發逆向分析過程,看看老夫是如何獲得上篇的具體方法的!
準備
【環境和工具】微信
- win7/xp虛擬機環境
- CrackMe005(ajj2.zip)
- ollydbg
- Dededark
- peid
- UPXEasyGUI.exe(upx專用脫殼器)
【學習層次】函數
- 爆破,可是這個CM做者聲明瞭,爆破他是不承認的
- 解密流程,寫註冊機
- 積累Delphi程序逆向特色經驗
詳解視頻
搞清Delphi控件ID在反彙編代碼中的特色,其實邏輯就清晰多了
https://v.qq.com/x/page/x0830...工具
實戰圖文
一.DedeDark梳理事件、控件信息
學習

二.動態分析spa
1.根據字符串定位總判斷位置orm
字符串「註冊了」,「厲害厲害真佩服」入手,定位發現是timer2事件函數,五個判斷不停的判斷,如圖視頻
能夠看到判斷跟6個值有關,分別是[ebx+304]、[ebx+308]、[ebx+310]、[ebx+318]、[ebx+314]、[ebx+31C],咱們下文全部就對其簡稱作30四、30八、3十、31八、31四、31Chtm
2.逐個判斷層層分析事件
咱們從簡單往復雜,並結合他們之間內在的邏輯前後順序,去逐個分析,順序分別是31C、30四、30八、3十、314和318,其中最難的是310,方法是常量跟蹤法,即在OD中點擊 查找→全部常量 ,看看都那些地方對這些值有操做
31C
- 總判斷目標:31C值,不能等於0x3E7
- 相關事件函數:Button1Click
- 最終逆向分析結論:Buton1Click事件不能被觸發,不然31C就會被賦值0x3E7,即不能點擊註冊按鈕,這裏須要注意click事件和mousedown事件,click必須是一個按下和擡起的全過程,並且鼠標位置都在按鈕控件範圍內,而mousedwon事件按下就是
- 具體逆向分析過程以下
全部常量查找結果,以下

反彙編代碼以下

呵呵就一行,確實簡單吧
304
- 總判斷目標:304值,不能等於0xC34
- 相關事件函數:FormCreat
- 最終逆向分析結論:FormCreat生成表單的事件函數中,會對一個固定路徑檢查是否有合規內容的合規文件,有則,顯示出隱藏的Edit2控件
- 具體逆向分析過程以下
全部常量查找結果,以下

反彙編代碼以下

注意:我這裏已經把,CrackMe開發者要求的X盤符改成了C盤符,爲的是方便
308
- 總判斷目標:308值,不能等於0x230D
- 相關事件函數:Button1MouseDown、Panel1DblClick
- 最終逆向分析結論:308初始值是由FormCreat函數初始化爲0x28E,在Button1MouseDown事件中,右鍵一次則308值增長0x3,最終目標是0x29D,由於等於0x29D後,Panel1DblClick事件就能夠解禁Edit2控件,則0x29D減去0x28E再除以0x3最後結果等於5,即右鍵點擊註冊按鈕5次,再去雙擊panel1控件沒有圖的地方,就能夠解禁Edit2控件
- 具體逆向分析過程以下
全部常量查找結果,以下

反彙編代碼以下

310 中嵌套 30C,最複雜的地方
- 總判斷目標:310值,必須等於0xF94
- 相關事件函數:FormMouseMove、Edit2DblClick
- 最終逆向分析結論:310的值要想最終被賦值0xF94,必須完成三重判斷,第一個是當控件ID是0xE20時,便是image3"性相近"的時候,FormMouseMove捕捉的XY座標都足夠大,即右下腳,知足則310被賦值0x10,第二個是當控件ID是0x2DC時,即image2"性本善"的時候,FormMouseMove捕捉的X座標足夠小、Y座標足夠大,第三個是,30C不能等於初始值0x9, 30C被賦值的條件是Edit2中的字符串長度是8位,且第二位是"_",第6位是"," ,咱們寫1_345,78是符合要求的,同時要求用戶名長度是3的整數倍,而後左鍵雙擊Edit2控件,便可給30C賦值,具體賦值結果又跟你的磁盤剩餘空間有關。當上面這一系列嵌套判斷都合規後,則完成310賦值0xF94,同時如果用戶名是"ajj",則顯示隱藏控件ID是0x2FC的Label3,顯示值是30C
- 具體逆向分析過程以下
310全部常量查找結果,以下

310反彙編代碼以下

發現嵌套30C,那麼繼續常量查找30C,以下

30C反彙編代碼以下


這裏實際上是這個crackme最難的地方了,其實邏輯並不複雜,須要耐性和記錄給理清晰便可
314和318
- 總判斷目標:314的值等於318的值
- 相關事件函數:image1~4MouseDown
- 最終逆向分析結論:其實314的值在上一個流程中已經賦值完畢,314的值取決於30C的值,30C分別是0、一、二、3的時候,314分別是0x4一、0x3D、0x3四、0xDF,而318的值,則是點擊1~4幅圖片,區分左右鍵,分別自增不一樣的數值,具體以下方圖片,最終要求318的值等於314的值
- 具體逆向分析過程以下
全部常量314查找結果,以下

314反彙編代碼以下

318全部常量查找結果,如圖

至此,以下圖timer2全部的總判斷所有過關,因此timer2每次觸發,都將走註冊成功的流程,是否是感受很刺激,躍躍欲試的,去網盤中下載,去折磨本身的吧
文章中涉及軟件、課件、源碼等均在網盤,爲避免網盤連接失效,公衆號中回覆:網盤
歡迎關注微信公衆號:逆向驛站

相關文章
● CrackMe-005精解(上)
● CrackMe-004精解
● CrackMe-003精解
● CrackMe-002精解
● CrackMe-001精解
本期標籤:dededark|delphi反彙編|crackme|crackme5|crackme05