《逆向工程核心原理》-- 調(diào)試HelloWorld.exe程序

首先用OllyDbg調(diào)試工具打開在VS中寫好的HelloWorld.exe程序。



打開之后,彈出了提示框,提示入口點(diǎn)在代碼外。調(diào)試器的停止地點(diǎn)和書上描述不一樣,第一條并不是CALL,而是

MOV DWORD PTR SS:[ESP+8],EBX

第二條指令為

JMP ntdll.778705B9

離當(dāng)前指令的7787FFA8還是距離挺遠(yuǎn)。
跳至778705B9處:


跳轉(zhuǎn)后首先將EBP壓棧,再將ESP傳給EBP,此時(shí)的ESP為00BEF868:


經(jīng)過兩個(gè)沒什么用的CALL之后



發(fā)現(xiàn)此處PUSH了 ntdll.77907D40,暫時(shí)不知道PUSH的什么東西,然后進(jìn)入779705E1處的CALL


終于到了書上所描述402524處的指令段,此處并沒有調(diào)用MessageBox()API,不是所要尋找的main()函數(shù),繼續(xù)向下



在進(jìn)入000A110E后,在下面的指令中發(fā)現(xiàn)了MessageBoxW,初步猜測此處為main()函數(shù)內(nèi)部



之后在進(jìn)行跟蹤幾步之后

重新進(jìn)行一次調(diào)試,F(xiàn)8進(jìn)行指令跳轉(zhuǎn),發(fā)現(xiàn)CALL 000A1AD0處執(zhí)行了MessageBox(),初步判定000A1AD0處為main()函數(shù)


在name in all modules 中查找MessageBoxW
發(fā)現(xiàn)在如下地址:


在此處設(shè)置斷點(diǎn),然后F9繼續(xù)執(zhí)行,執(zhí)行到此處后,棧信息顯示如下


得到00D516EE處調(diào)用的MessageBoxW,查找此處發(fā)現(xiàn)了要找的信息:


在此處設(shè)置斷點(diǎn)提示在代碼有效空間外,ALT+M調(diào)出memory。得到如下信息


00D51000至00D56000之間的信息被壓縮過。難怪調(diào)試的時(shí)候那么奇怪

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先寄存器使用慣例:eip :指令地址寄存器,保存程序計(jì)數(shù)器的值,當(dāng)前執(zhí)行的指令的下一條指令的地址值,16位中為i...
    扎Zn了老Fe閱讀 2,099評(píng)論 0 0
  • 一、溫故而知新 1. 內(nèi)存不夠怎么辦 內(nèi)存簡單分配策略的問題地址空間不隔離內(nèi)存使用效率低程序運(yùn)行的地址不確定 關(guān)于...
    SeanCST閱讀 8,117評(píng)論 0 27
  • Exercise 3 方法:打開終端運(yùn)行make qemu-gdb,再打開另一個(gè)終端運(yùn)行make gdb,通過b ...
    找不到工作閱讀 10,316評(píng)論 0 6
  • 秋葉老師的課聽完了,意猶未盡。 以前當(dāng)老師的時(shí)候,因?yàn)橐敵鼋o學(xué)生,要寫論文、教材、出書,還要完成課題,所以讀書、...
    有知有未閱讀 250評(píng)論 3 2
  • 我始終相信感情是經(jīng)得起時(shí)間推敲的。 寫下這句話時(shí),我剛看完小九寫給我的一段話,剛經(jīng)歷過毒藥們看我文章的歡喜。 小九...
    沈七年閱讀 1,130評(píng)論 8 16

友情鏈接更多精彩內(nèi)容