本教程轉自吾愛破解,作者:wwh1004
剛接觸dbg這個工具,對於很多功能和快捷鍵還不熟悉,找到這個帖子發現挺不錯的。轉載過來和大家分享,文字和圖片排版方面略有修改。侵刪。
這篇文章主要是為.NET逆向但不會x64dbg的同學准備的,文章基本上零基礎,會一點c#/vb.net就能看懂文章。
文章以visual studio 2017為參照,講解如何像用vs調試.NET程序集一樣使用x64dbg調試本機代碼
x64dbg下載地址:https://github.com/x64dbg/x64dbg/releases
x64dbg基本操作:
1.步進
等於vs中的"逐語句"
vs圖標: vs快捷鍵: F11
x64dbg圖標: x64快捷鍵:F7
2.步過
等於vs中的"逐過程"
vs圖標: vs快捷鍵:F10
x64dbg圖標: x64快捷鍵:F8
3.運行到返回
等於vs中的"跳出"
vs圖標: vs快捷鍵:Shift+F11
x64dbg圖標: x64快捷鍵:Ctrl+F9
4.運行
等於vs中的"啟動"/"繼續"
vs圖標:
vs快捷鍵:F5
x64dbg圖標: x64dbg快捷鍵:F9
5.斷點
在想斷下的指令上按下對應快捷鍵即可
vs圖標:啟用: 禁用:
vs快捷鍵:F9
x64dbg圖標:啟用: 禁用:
x64快捷鍵:F2
x64dbg入門操作:
1.設置符號文件保存路徑:
Q:符號文件是什么?A:*.pdb文件,還不知道就百度吧。。。Q:為什么要設置?
A:符號文件通常很大,不然x64dbg默認保存到自身目錄下,導致升級x64dbg,遷移x64dbg到其它位置極為不便
這樣就設置好了
2.使用符號文件:
很多情況下,x64dbg不會自動加載符號文件(不知道為什么,可能是防止調試時太卡吧,vs加載過多符號文件就會卡頓)
這時候就需要我們手動加載了
x64dbg沒有加載選項,可以點"下載此模塊的符號信息"(要加載所有符號文件可以點"下載所有模塊的符號信息")
如果符號文件緩存文件夾中已經有了這個符號文件,x64dbg直接從本地加載,否則從符號文件服務器上下載並加載
右邊顯示了dll自身導出的函數和符號文件導出的函數,左鍵單擊這里的函數,按下F2,是可以下斷點的
3.安裝插件:
對於.NET逆向,一般只要裝一個反調試器檢測的插件就行了
我在用@xjun 的SharpOD:https://www.52pojie.cn/thread-628837-1-1.html
不是打廣告,是這個插件真的很好用,調試體驗極佳(用作者的推薦設置)
不扯了,說下怎么安裝
把壓縮包里面的*.dp*文件拖入對應的文件夾(其實這些*.dp*也是*.dll文件,只不過改了個后綴名讓x64dbg知道這里有個插件)
比如裝32位x64dbg的插件,就將*.dp32拖入x64dbg\x32\plugins
x64dbg實際操作:
1.查看函數調用時的參數:
首先你需要明白什么是調用約定,這些需要百度
現在我使用32位x64dbg調試一個unpackme,在mscorwks.dll的AssemblyNative::LoadImage處下了斷點,按下F9,x64dbg在此函數入口處斷下了
在符號窗口可以看到這個函數的調用約定是fastcall
我們回到CPU,把調用約定改成fastcall
這里的1,2,3就是代表了第1,2,3個參數
我們剛才已經看到了,這個函數第一個參數是"Array<unsigned char> *",表示指向了一個字節數組,這里的"unsigned char"等同於C#/VB.NET中的"byte",而不是C#/VB.NET中的"char"
2.轉儲內存到文件:
我們在內存窗口中按下Ctrl+G,輸入0312BBAC
成功跳轉到了一個內存區域,儲存了"Array<unsigned char>"
我們點一下4D或者M
再將右邊滾動條滾到底部,按住Shift,在左鍵單機一下最后一個字節
右鍵,二進制編輯->保存到文件
這樣,你就把一個.NET程序集人工Dump下來了
dnSpy打開看看,是個沒啥用的程序集(這個僅僅是演示,AssemblyNative::LoadImage斷點有時是很有用的)