2.逆向分析Hello World!程序-上
?
?
代碼窗口:默認(rèn)用于顯示反匯編代碼,還用于各種注釋、標(biāo)簽,分析代碼時(shí)顯示循環(huán)、跳轉(zhuǎn)位置等信息
寄存器窗口:實(shí)時(shí)顯示CPU寄存器的值,可用于修改特定的寄存器
數(shù)據(jù)窗口:以Hex/ASCII/Unicode值的形式顯示進(jìn)程的內(nèi)存地址,也可在此修改內(nèi)存地址
棧窗口:實(shí)時(shí)顯示ESP寄存器指向的進(jìn)程棧內(nèi)存,并允許修改
EP是Windows可執(zhí)行文件(EXE、DLL、SYS等)的代碼入口點(diǎn),是執(zhí)行應(yīng)用程序時(shí)最先執(zhí)行的代碼的起始位置,它依賴于CPU。用OD調(diào)試XX.exe剛開始默認(rèn)跳轉(zhuǎn)的位置就是EP處。
?
先補(bǔ)充幾個(gè)快捷鍵:
????Ctrl+F2??重新開始調(diào)試(終止正在調(diào)試的進(jìn)城后再次運(yùn)行)
????F7??????單步步入,可以進(jìn)入到函數(shù)里
????F8??????單步步過(guò),不進(jìn)入任何函數(shù),往下走一條指令
????Ctrl+F9??一直執(zhí)行,知道遇到RETN指令,跳出函數(shù)
加載exe到od里,直接來(lái)到EP處,然后就是一路F7/F8[這個(gè)是剛開始,后期有經(jīng)驗(yàn)了就不會(huì)這么無(wú)腦的從頭開始找了]call,是函數(shù)調(diào)用,遇到call想進(jìn)函數(shù)里看看就F7想路過(guò)就F8然后是找到這么一個(gè)地方(注意你的地址和我的地址可能不同)
?
我的PE文件代碼段FOA(400)->RVA(1000)->VA(1341000)這個(gè)計(jì)算方式以后說(shuō)。
然后就F7進(jìn)去看看:
?
紅色注釋部分就是我們要找的函數(shù)。而且在call之前各種把參數(shù)push進(jìn)去,還有就是看到了字符串地址在013420F8處,從棧和內(nèi)存里也能清楚的看到:
同時(shí)現(xiàn)在考慮下,這個(gè)調(diào)用MessageBox函數(shù)的函數(shù)不就是main函數(shù)嗎?執(zhí)行到這個(gè)函數(shù)的return處,在F8返回上一層:
?
回來(lái)后就準(zhǔn)備開始執(zhí)行add了,那么上面那個(gè)call?NXYod.00341000就是main函數(shù)地址碼。這個(gè)其實(shí)是可以算出來(lái)的。還是根據(jù)FOA->RVA->VA?最后那個(gè)RVA->VA在OD里可以直接Ctrl+G輸入RVA他會(huì)自動(dòng)跳轉(zhuǎn)到VA處,比如我的FOA是400,我算出來(lái)RVA是1000(我自己寫了個(gè)計(jì)算工具),然后我在OD里直接Ctrl+G
?
OK之后直接跳轉(zhuǎn)到:
?
這直接就是main函數(shù)了。
?
?
總結(jié)
以上是生活随笔為你收集整理的2.逆向分析Hello World!程序-上的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.关于逆向工程(RE、RCE)-笔记
- 下一篇: 防止SQL注入