您可能之前看到過我寫的類似文章,為什么還要重復撰寫呢?只是想更好地幫助初學者了解病毒逆向分析和系統安全,更加成體系且不破壞之前的系列,因此,我重新開設了這個專欄,準備系統整理和深入學習系統安全、逆向分析和惡意代碼檢測,“系統安全”系列文章會更加聚焦,更加系統,更加深入,也是作者的慢慢成長史,換專業確實挺難的,逆向分析也是塊硬骨頭,但我也試試,看看自己未來四年究竟能將它學到什么程度,漫漫長征路,偏向虎山行,享受程序,一起加油~
作者前文介紹了微軟證書漏洞CVE-2020-0601,并講解ECC演算法、Windows驗證機制,復現可執行檔案簽名證書的例子,這篇文章將詳細講解逆向分析OllyDbg動態除錯工具的基本用法,包括界面介紹、常用快捷鍵和TraceMe案例分析, 這些基礎性知識不僅和系統安全相關,同樣與我們身邊常用的軟體、檔案、作業系統緊密聯系,希望這些知識對您有所幫助,更希望大家提高安全意識,安全保障任重道遠,本文參考了B站漏洞銀行、安全網站和參考文獻中的文章(詳見參考文獻),并結合自己的經驗和實踐進行撰寫,在此感謝這些大佬們,
文章目錄
- 一.OllyDbg界面介紹和配置
- 二.常用快捷鍵
- 三.OllyDbg動態爆破軟體演示
- 四.總結
從2019年7月開始,我來到了一個陌生的專業——網路空間安全,初入安全領域,是非常痛苦和難受的,要學的東西太多、涉及面太廣,但好在自己通過分享100篇“網路安全自學”系列文章,艱難前行著,感恩這一年相識、相知、相趣的安全大佬和朋友們,如果寫得不好或不足之處,還請大家海涵!
接下來我將開啟新的安全系列,叫“系統安全”,也是免費的100篇文章,作者將更加深入的去研究惡意樣本分析、逆向分析、內網滲透、網路攻防實戰等,也將通過在線筆記和實踐操作的形式分享與博友們學習,希望能與您一起進步,加油~
- 推薦前文:網路安全自學篇系列-100篇
作者的github資源:
- 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
- 網路安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
前文分析:
- [系統安全] 一.什么是逆向分析、逆向分析基礎及經典掃雷游戲逆向
- [系統安全] 二.如何學好逆向分析及呂布傳游戲逆向案例
- [系統安全] 三.IDA Pro反匯編工具初識及逆向工程解密實戰
- [系統安全] 四.OllyDbg動態分析工具基礎用法及Crakeme逆向
- [系統安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大戰僵尸游戲
- [系統安全] 六.逆向分析之條件陳述句和回圈陳述句原始碼還原及流程控制
- [系統安全] 七.逆向分析之PE病毒原理、C++實作檔案加解密及OllyDbg逆向
- [系統安全] 八.Windows漏洞利用之CVE-2019-0708復現及藍屏攻擊
- [系統安全] 九.Windows漏洞利用之MS08-067遠程代碼執行漏洞復現及深度提權
- [系統安全] 十.Windows漏洞利用之SMBv3服務遠程代碼執行漏洞(CVE-2020-0796)復現
- [系統安全] 十一.那些年的熊貓燒香及PE病毒行為機理分析
- [系統安全] 十二.熊貓燒香病毒IDA和OD逆向分析(上)病毒初始化
- [系統安全] 十三.熊貓燒香病毒IDA和OD逆向分析(中)病毒釋放機理
- [系統安全] 十四.熊貓燒香病毒IDA和OD逆向分析–病毒釋放程序(下)
- [系統安全] 十五.Chrome瀏覽器保留密碼功能滲透決議、藍屏漏洞及某音樂軟體漏洞復現
- [系統安全] 十六.PE檔案逆向基礎知識(PE決議、PE編輯工具和PE修改)
- [系統安全] 十七.Windows PE病毒概念、分類及感染方式詳解
- [系統安全] 十八.病毒攻防機理及WinRAR惡意劫持漏洞(腳本病毒、自啟動、定時關機、藍屏攻擊)
- [系統安全] 十九.宏病毒之入門基礎、防御措施、自發郵件及APT28宏樣本分析
- [系統安全] 二十.PE數字簽名之(上)什么是數字簽名及Signtool簽名工具詳解
- [系統安全] 二十一.PE數字簽名之(中)Signcode、PEView、010Editor、Asn1View工具用法
- [系統安全] 二十二.PE數字簽名之(下)微軟證書漏洞CVE-2020-0601復現及Windows驗證機制分析
- [系統安全] 二十三.逆向分析之OllyDbg動態除錯復習及TraceMe案例分析
宣告:本人堅決反對利用教學方法進行犯罪的行為,一切犯罪行為必將受到嚴懲,綠色網路需要我們共同維護,更推薦大家了解它們背后的原理,更好地進行防護,該樣本不會分享給大家,分析工具會分享,(參考文獻見后)
一.OllyDbg界面介紹和配置
OllyDbg是一個動態追蹤工具,將IDA與SoftICE結合起來的思想,Ring 3級除錯器,非常容易上手,是當今最為流行的除錯解密工具之一,它還支持插件擴展功能,是目前最強大的除錯工具之一,
OD和IDA可以說是逆向分析的“倚天”和“屠龍”,一個動態分析,一個靜態分析,

該系列文章參考B站漏洞“游戲逆向交流”大佬的視頻,主要內容包括:
- OllyDbg界面介紹和配置
- 常用快捷鍵
- OllyDbg基本操作
- 常用斷點INT 3斷點原理決議
- INT 3斷點的反除錯與反反除錯
- 常用斷點之硬體斷點原理決議
- 常用斷點之記憶體斷點原理決議
- 常用斷點之訊息斷點原理決議
- 常用斷點之條件斷點原理決議
- 記憶體訪問一次性斷點和條件記錄斷點
- 插件
- Run trace 和Hit trace
- 除錯符號
- OllyDbg的常見問題
推薦大家學習,參考網址:https://www.bilibili.com/video/BV1cE411f7sE
OllyDbg是逆向分析常用的除錯工具,打開主界面如下圖所示,包括反匯編視窗、暫存器視窗、資訊視窗、資料視窗、堆疊視窗,
- 常見動態除錯工具:OllyDbg、WinDbg、x64Dbg
- 常用靜態除錯工具:IDA

如果我們打開的界面很亂像下圖一樣,可以點擊頂部快捷鍵C,然后主視窗最大化即可優化布局,


接著隨便打開一個EXE程式,顯示如下圖所示:

下面先講解各個視窗的含義:
- 反匯編視窗: 顯示被除錯程式的反匯編代碼,包括地址、HEX資料、反匯編、注釋
- 暫存器視窗: 顯示當前所選執行緒的CPU暫存器內容,點擊標簽可切換顯示暫存器的方式
- 資訊視窗: 顯示反匯編視窗中選中的第一個命令的引數及跳轉目標地址、字符等
- 資料視窗: 顯示記憶體或檔案的內容,右鍵選單可切換顯示方式
- 堆疊視窗: 顯示當前執行緒的堆疊,記錄傳遞的引數或區域變數
- 子視窗的快捷方式

接著補充界面選項知識點,點擊 “選項” -> “界面”,設定UDD路徑和插件路徑,

UDD路徑用于保存我們除錯的資訊,

插件路徑包含了各種插件,并且可以直接使用,

如果你想選中一個EXE檔案,右鍵直接能夠用OllyDbg打開,怎么設定呢?

點擊 “選項” -> “添加到瀏覽器”,添加OllyDbg到系統資源管理器選單,

如果我們每次運行OD都提示管理員權限運行,則可以進行快捷鍵簡單的設定,

設定方式如下:兼容性中選擇“以管理員身份運行此程式”,

二.常用快捷鍵
下面簡單講解常用的快捷鍵除錯方式,
F2:設定斷點
設定斷點,只要在游標定位的位置按下F2鍵即可,再按一次F2鍵會洗掉斷點,如下圖所示的紅色位置,程式運行到此處會暫停,

F9:運行
按下F9鍵運行程式,如果沒有設定相應的斷點,被除錯的程式直接開始運行,

F8:單步步過
單步步過,每按一次這個按鍵,將執行反匯編視窗中的一條指令,遇到CALL等子程式不進入其代碼,

F7:單步步入
單步步入,功能通單步步過(F8)類似,區別是遇到CALL等子程式時會進入其中,進入后首先停留在子程式的第一條指令上,如下圖進入CALL子程式,

CALL表示進入函式,RETN表示回傳,

F4:運行到選定位置
運行到選定位置,作用就是直接運行到游標所在位置處暫停,比如游標在0x00401034位置,我們接著從0x00401027運行,這會直接跳轉到游標處,當我們除錯程序中遇到回圈,可以調至游標跳過回圈,

CTRL+F9:執行到回傳
執行到回傳,按下此鍵會執行到一個回傳指令時暫停,常用于從系統領慷訓傳到我們除錯的程式領空,在除錯程式時,按下CTRL+F9會一直運行程式,直到一個RETURN回傳,比如我們進入下圖所示的子程式,會運行至RETN 10,

再在RETN 10位置按下F8,則會回傳如下圖所示的位置,執行完CALL函式進入下一句,

CTRL+F2:重新開始
當程式想重新除錯時,按下CTRL+F2即可,
ALT+F9:執行到用戶代碼
執行到用戶代碼,從系統領空快速回傳我們除錯的程式領空,

三.OllyDbg動態爆破軟體演示
下面以《加密與解密》的“TraceMe.exe”程式為例,程式下載地址:
- https://github.com/eastmountyxz/Reverse-Analysis-Case

當我們輸入錯誤的用戶名和序列號,點擊“Check”按鈕會顯示輸入錯誤,

接下來我們需要用OD爆破,該程式的基本流程如下圖所示,只有輸入正確的用戶名和序列號才能顯示正確對話框,

接著通過OD打開該程式,它會自動定位到模塊入口點0x004013A0位置,作者github資源提供了各種OD版本供讀者使用,

第一步,首先按下F9程式就會運行起來,并且彈出對話框

第二步,我們需要知道輸入對話框輸入值的函式都有哪些
點擊 “API斷點設定工具” -> “常用斷點設定”,

勾選獲取對話框的輸入值的兩個函式“GetWindowTextA”和“GetDlgItemTextA”,這意味著給這兩個函式下斷點,當程式運行到某個函式即會停止,如果讀者不確定對應的函式,可以勾選所有的函式,

第三步,輸入用戶名和序列號并點擊“Check”按鈕
此時程式進入0x75CA4390位置,并且顯示呼叫GetDlgItemTextA函式,

我們先按下F2將斷點去掉,再按下F9執行代碼,可以看到“序列號錯誤,再來一次!”的彈框,從而證明我們剛才的斷點是有效果的,
GetDlgItemTextA的四個引數:對話框句柄,控制元件標識(ID號),緩沖區指標,緩沖區最大字符數,參考Win32.API手冊,

接著我們再勾選“GetDlgItemTextA”函式,再點擊“Check”按鈕,它會繼續定位到0x75CA4390位置,如下圖所示,


第四步,接著按下Ctrl+F9執行到回傳位置,
此時顯示地址0x75CA43C1,

第五步,再按下F8鍵執行回傳
此時我們看到了GetDlgItemTexeA函式執行的位置,它會回傳呼叫函式的下一行代碼,注意是下一行,我們程式是有兩個對話框值,所以會有兩個GetDlgItemTexeA函式的呼叫,

接著我們繼續按F8往下走,這兩個值獲取完成,接下來應該會是計算序列的程序,再進行判斷是否正確,

繼續往下走,來到0x004011E4位置,我們可以看到右上角EDX和EAX的值就是我們輸入的“eastmount”和“123456”,同時,右下角顯示兩個值都已經壓到堆疊里面了,
- EAX:123456
- EDX:eastmount

第六步,訪問TraceMe.00401340函式
我們可以猜測呼叫的“call TraceMe.00401340”函式是做判斷,并添加如下注釋,但也可能不是,我們在進行軟體逆向分析或爆破時,通常需要依靠邏輯能力和編程能力來推測,

按下F7進入該程式,位置0x00401340,

再按F8執行,可以發現這里存在一個回圈,判斷輸入的值是否與它原始的值一致,

回圈完之后,繼續執行可以看到一些序列號“123456”的判斷資訊,

最終它會回傳一個值放到EAX中,該值等于0,然后繼續執行回傳該值,

回傳值就是0,然后繼續執行,

第七步,跳轉函式分析
如果這個函式就是判斷函式的話,那么下面這個跳轉很可能就是關鍵跳轉,就是我們需要修改的跳轉,利用其來進行爆破,位置:0x004011F5

增加斷點,接著按F8繼續運行,

發現其直接跳轉至0x0040122E,然后提示“序列號錯誤,再來一次!”,

再按下F9運行,后面果然彈出錯誤對話框,從而確定上面為關鍵跳轉,

第八步,按下Ctrl+F2重新運行程式
接著按F9執行程式,在彈出的對話框中輸入內容,點擊“check”,

繼續按下F9運行程式跳轉到我們剛剛下斷點的“關鍵跳轉”位置,

關鍵步驟:修改匯編代碼,JE是實作跳轉,修改為JNZ不跳轉,

繼續按F8執行,或者直接按下F9,可以提示“恭喜你,成功”的對話框,這就是爆破的基本流程,

第九步,保存爆破軟體
選擇修改的幾行內容,然后右鍵滑鼠,點擊“復制到可執行檔案”,

選擇“TraceMe.exe”檔案右鍵保存檔案,如“TraceMe_PO2.exe”,

保存成功后,隨便輸入用戶名和序列號,都提示成功!

同時,該程式輸入長度還有一個判斷,我們也可以嘗試進行爆破,

但其原理是什么呢?后續的文章我們會繼續介紹,
四.總結
寫到這里,這篇文章就介紹完畢,希望您喜歡~
- OllyDbg界面介紹和配置
- 常用快捷鍵
- OllyDbg動態爆破軟體演示
這篇文章中如果存在一些不足,還請海涵,作者作為網路安全初學者的慢慢成長路吧!希望未來能更透徹撰寫相關文章,同時非常感謝參考文獻中的安全大佬們的文章分享,感謝師傅、師兄師弟、師姐師妹們的教導,深知自己很菜,得努力前行,
歡迎大家討論,是否覺得這系列文章幫助到您!任何建議都可以評論告知讀者,共勉,
- 逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
- 網路安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
2020年8月18新開的“娜璋AI安全之家”,主要圍繞Python大資料分析、網路空間安全、人工智能、Web滲透及攻防技術進行講解,同時分享CCF、SCI、南核北核論文的演算法實作,娜璋之家會更加系統,并重構作者的所有文章,從零講解Python和安全,寫了近十年文章,真心想把自己所學所感所做分享出來,還請各位多多指教,真誠邀請您的關注!謝謝,

(By:Eastmount 2021-02-22 中午12點寫于武漢 http://blog.csdn.net/eastmount/ )
參考資料:
[1] 動態除錯工具之OllyDbg(OD)教程 - B站yxfzedu
[2] [逆向筆記] OD工具使用-逆向TraceMe.exe- 17bdw隨手筆記
[3]《加密與解密》段鋼等著
[4]《OllyDBG入門教程》看雪學院 - CCDebuger
[5] 160個Crackme006 - 鬼手56大佬
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/263036.html
標籤:其他
上一篇:致未來的那個她
