首先,用peid開啟加殼後的程式crackmeupx.exe,可以發現使用的是upx殼。upx殼是一種比較簡單的壓縮殼,只需要根據堆疊和暫存器的值進行除錯,就能找到程式的正確入口點。當然,如果不怕麻煩的話,也可以全程單步除錯,直到出現像正常程式的入口點一樣特徵的**,這樣就找到了入口點。
用我愛破解版ollydbg開啟crackmeupx.exe,可以看到第一條指令是pushad,這顯然不是普通程式應該有的第一條指令。pushad儲存當前的上下文,即把暫存器的值存到堆疊中。
pushad後,可以看到堆疊中的內容正是之前的各個暫存器的值,其中棧頂儲存的是edi的值。棧頂的位址儲存在esp中。如果程式要正常執行,必定要從棧中取回這些值,因此可以到棧頂的內容表示的位址去看看會進行什麼操作。
在棧頂所在位址設定斷點,執行到此處,發現是乙個跳轉指令,跳轉到0x00401000。
跳轉後,發現出現的**符合正常程式入口點的特徵,那麼正確的入口點應該就是0x00401000。基於此,進行脫殼並重命名為test.exe。
用peid開啟test.exe,可以看到已經沒有殼了。至此,脫殼完成。
upx 手動脫殼
查殼 upx這類壓縮殼手動脫殼非常簡單。一 查詢oep 二 dump 修復iat way1 首先在程式入口發現pushad指令,接下來可以直接查詢指令popad 在jmp指令處下斷,執行。jmp之後來到oep 當然可以在單步pushad後,轉到esp的記憶體視窗,設定硬體斷點,執行,找到jmp處。執...
upx脫殼學習筆記
目前我所知upx脫殼的三種方法 1,單步跟蹤法 發現往回跳的都給我按f2 breakpoint,如果遇見連續多jump就在最後個jump後設定斷點,不停的找啊找,要有耐心 2,esp定律法 首先先step over f8 pushad壓棧,同時會發現esp發生改變,再使用command命令輸入hh ...
ximo脫殼1 手脫UPX殼
ximo脫殼之基礎教程第一課 手脫upx殼 upx殼為一種簡單的壓縮殼 除錯工具為peid和od 手脫upx有四種方式找到oep 第一種 單步跟蹤 第二種 esp定址 第三種 2次記憶體映象法 第四種 一次直達法 首先,開啟od,將示例程式 開啟該檔案之後,我們進行單步跟蹤 圖中標出的即為單步跟蹤的...