CrackMe005-下篇 | 逆向破解分析 | 160個CrackMe(視頻+圖文)深度解析系列

作者:逆向驛站
微信公衆號:逆向驛站
知乎:逆向驛站
圖片描述

CrackMe005,上篇說了具體方法,下篇來發逆向分析過程,看看老夫是如何得到上篇的具體方法的!

準備

【環境和工具】

  • win7/xp虛擬機環境
  • CrackMe005(ajj2.zip)
  • ollydbg
  • Dededark
  • peid
  • UPXEasyGUI.exe(upx專用脫殼器)

【學習層次】

  • 爆破,但是這個CM作者聲明瞭,爆破他是不認可的
  • 解密流程,寫註冊機
  • 積累Delphi程序逆向特點經驗

詳解視頻

搞清Delphi控件ID在反彙編代碼中的特點,其實邏輯就清晰多了

https://v.qq.com/x/page/x0830...

實戰圖文

一.DedeDark梳理事件、控件信息
圖片描述

圖片描述

二.動態分析

1.根據字符串定位總判斷位置

字符串“註冊了”,“厲害厲害真佩服”入手,定位發現是timer2事件函數,五個判斷不停的判斷,如圖

可以看到判斷跟6個值有關,分別是[ebx+304]、[ebx+308]、[ebx+310]、[ebx+318]、[ebx+314]、[ebx+31C],我們下文所有就對其簡稱做304、308、310、318、314、31C

2.逐個判斷層層分析

我們從簡單往復雜,並結合他們之間內在的邏輯先後順序,去逐個分析,順序分別是31C、304、308、310、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、1、2、3的時候,314分別是0x41、0x3D、0x34、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

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