逆向動態(tài)調(diào)試工具簡介
常用逆向工具簡介:
二進(jìn)制盡管屬于底層知識,但是還是離不開一些相應(yīng)工具的使用,今天簡單介紹一下常用的逆向工具OD以及他的替代品x96dbg,這種工具網(wǎng)上很多,也可以加群找老滿(184979281):
這倆款工具都是動態(tài)調(diào)試工具,使用方式也大致相同,唯一區(qū)別的OD屬于經(jīng)典款,各種功能插件及其全面好用,唯一不足就是沒有64位版本,而x96dbg分x32dbg和x64dbg,支持64位,但是他的插件沒有OD那么完善。我們用Visual Studio 2019編寫一個(gè)demo,拖入OD中分析(32位):
#include
#include
char a[] = "https://www.vultop.com/";
int main(int argc, char* argv[])
{
??? printf("%s", a);
??? system("pause");
??? return 0;
}

在這我們簡單說一下OD主要使用的快捷鍵以及界面功能:

常用調(diào)試指令:
常用到的就是F7單步步入,比如走到一個(gè)call指令,F(xiàn)7會跟進(jìn)call內(nèi)部函數(shù),F(xiàn)8單步步過則會跳過call內(nèi)函數(shù),執(zhí)行到call下一行,F(xiàn)4是運(yùn)行到當(dāng)前光標(biāo)位置,F(xiàn)9是讓程序運(yùn)行,Ctrl+F9是執(zhí)行到當(dāng)前call的返回地方ret指令。
斷點(diǎn)類型:
int 3斷點(diǎn):F2鍵或者雙擊要下斷點(diǎn)的代碼的硬編碼地方,當(dāng)前代碼會被暫時(shí)修改為int 3斷點(diǎn);
硬件斷點(diǎn):可以下四個(gè)硬件斷點(diǎn),DR0-DR3,記錄四個(gè)地址;
內(nèi)存斷點(diǎn):修改當(dāng)前位置的內(nèi)存屬性,達(dá)到觸發(fā)異常的目的。

接下來介紹一下主界面:

隨后我們可以簡單的通過倆種方式找到我們的主函數(shù):
第一種,查找字符串:


可以看到我們打印的字符串,雙擊過去,到了我們的主函數(shù)中打印函數(shù)這里:

隨后我們在這里F2下斷點(diǎn),然后F9就可以到我們的主函數(shù)這里:


單步走過printf函數(shù),就可以看到控制臺打?。?/p>
第二種找到主函數(shù)方法,根據(jù)VS編譯器特征:
F8走過jmp,然后F7進(jìn)入第一個(gè)call:


然后找到這一坨特征,進(jìn)第二個(gè)call:

然后走第四個(gè)call:

走過一個(gè)jmp,就到了主函數(shù)這里:

接下來我們把demo改成64位,拖入x64dbg,大同小異,和OD用法基本一樣:



