x64dbg是逆向分析win64程序的利器,這款強(qiáng)大的免費(fèi)開源逆向工程和動(dòng)態(tài)調(diào)試工具專為Windows平臺設(shè)計(jì),原生支持中文,提供了與著名OllyDbg類似的用戶體驗(yàn)。x64dbg在操作界面上極為簡潔,專注于提供高效的調(diào)試功能,適用于那些熟悉OllyDbg的用戶。支持類似C的表達(dá)式解析器、全功能的DLL和EXE文件調(diào)試、IDA般的側(cè)邊欄與跳躍箭頭、動(dòng)態(tài)識別模塊和串、快反匯編、可調(diào)試的腳本語言自動(dòng)化等多項(xiàng)實(shí)用分析功能,可以滿足了用戶各方面使用需求。
主要特點(diǎn)
x64dbg通過其全面的功能支持,特別適合進(jìn)行64位應(yīng)用程序的調(diào)試和分析,這是其前輩OllyDbg無法實(shí)現(xiàn)的。具體功能包括:
- 類C語言的表達(dá)式解析器;
- 支持DLL和EXE文件的全面調(diào)試;
- 具有IDA風(fēng)格的側(cè)邊欄和跳轉(zhuǎn)箭頭;
- 動(dòng)態(tài)模塊和字符串識別;
- 快速反匯編;
- 支持腳本語言,實(shí)現(xiàn)調(diào)試過程的自動(dòng)化。
結(jié)構(gòu)簡介
x64dbg包含三個(gè)主要組件:
- DBG :調(diào)試核心部分,負(fù)責(zé)處理所有調(diào)試操作,并利用TitanEngine技術(shù)為GUI提供數(shù)據(jù)。
- GUI :圖形用戶界面部分,基于Qt框架構(gòu)建,提供與用戶的所有交互功能。
- Bridge :作為DBG和GUI之間的通信中介,允許在不更新其他代碼的情況下添加新功能。
x64dbg的設(shè)計(jì)不僅注重功能的強(qiáng)大,也兼顧用戶操作的便捷性。它是那些需要深入分析和調(diào)試64位應(yīng)用程序的專業(yè)人員的理想選擇,能夠有效地增強(qiáng)他們的工作效率。
功能特色
1、積極發(fā)展
x64_dbg正在不斷的積極發(fā)展。
2、GPLv3
我們同時(shí)提供了可執(zhí)行文件和源代碼。隨意作出貢獻(xiàn)。
3、自定義
C ++編寫的插件,改變顏色和調(diào)整你的喜好。
4、X64/X32支持
x64_dbg可以調(diào)試x64和X32的應(yīng)用程序。x64_dbg中文版只有一個(gè)接口。
5、建立在開源庫
x64_dbg使用的Qt,TitanEngine,BeaEngine,青蟹,楊松,LZ4和XEDParse。
6、操作簡單,功能強(qiáng)大的開發(fā)
x64_dbg使用C ++和Qt4的快速添加新的功能。
7、腳本化
x64_dbg有一個(gè)集成的,可調(diào)試,ASM-like腳本語言。
8、社區(qū)意識
x64_dbg有許多功能的倒車社會(huì)思想或創(chuàng)建的。
9、伸縮
編寫插件來添加腳本命令或集成的工具。
x64dbg使用教程
1、分析目標(biāo)程序
將目標(biāo)程序用x64dbg(實(shí)際上是x32dbg)打開,看看x64dbg的界面,這里常用的窗口都使用紅字標(biāo)注出來了
2、字符串搜索功能,我們可以通過x64dbg的字符串搜索功能來查看內(nèi)存中加載的字符串,具體操作步驟為:CPU(反匯編)窗口->鼠標(biāo)右鍵->搜索->選擇模塊(根據(jù)個(gè)人需求選擇,一般選擇當(dāng)前模塊,前提是得先執(zhí)行到主模塊)->字符串
3、我們單步到主模塊(單步調(diào)試快捷鍵和od一樣,F(xiàn)7單步步入,F(xiàn)8單步步過),字符串搜索得到如下結(jié)果,可以看到很明顯的字符串:
4、雙擊該字符串即可跳到反匯編窗口中相應(yīng)位置。
5、下軟件斷點(diǎn),運(yùn)行程序,觀察是何處調(diào)用了該代碼(鼠標(biāo)點(diǎn)擊相應(yīng)行,按下F2即可快速使用軟件斷點(diǎn)),下軟件斷點(diǎn)后,地址處會(huì)變?yōu)榧t色,斷點(diǎn)窗口能看到相應(yīng)信息。
6、讓程序運(yùn)行起來(快捷鍵F9),輸入注冊信息,點(diǎn)擊確認(rèn),等待命中軟件斷點(diǎn)
可以看到,程序的EIP指向了我們的軟件斷點(diǎn),此時(shí)信息框信息為失敗。
7、單步步過,一直走到返回ret,即可查看上層代碼
可以看到,源程序是使用了2個(gè)處理函數(shù),分別對用戶名和密碼進(jìn)行了運(yùn)算,用戶名運(yùn)結(jié)果放到了eax中,密碼運(yùn)算結(jié)果放在ebx中,比較二者運(yùn)算結(jié)果是否相同,決定調(diào)用注冊成功函數(shù)還是注冊失敗函數(shù)。(由于此時(shí)只是介紹工具使用,故不展示算法分析部分,大致流程為eax = F1(用戶名),ebx = F2(注冊碼),cmp eax,ebx)
8、這時(shí)候,我們使用x64dbg的代碼修改功能,將對應(yīng)的注冊失敗驗(yàn)證跳過,即可完成破解:將0x401243處的je 0x40124C改為jmp 0x40124C(雙擊代碼行即可修改)
9、保存到文件(反匯編窗口右鍵->補(bǔ)丁->修補(bǔ)文件)
10、現(xiàn)在,驗(yàn)證我們的破解成果吧!