ORiEN脫殼分析,orien脫殼
作者:Fly2015
ORiEN這種殼之前沒有接觸,到底是壓縮殼還是加密殼也不知道,只能試一試嘍。需要脫殼的程式是吾愛破解脫殼練習第7期的題目。
首先對加殼程式進行查殼,這一步也是程式脫殼的必要的一步。
使用DIE工具對加殼程式進行查殼,發現被加殼程式原來是用Delphi語言編寫的,這個資訊對於找原程式的OEP是很有協助的。
下面OD載入程式進行分析,被加殼程式進入點彙編代碼:
對被加殼的程式進行脫殼的時候,先不慌著脫殼,最好先看下程式的彙編代碼,F7/F8單步走幾步看看,沒準你會有新發現。
F8單步跟蹤幾步,發現了PUSHAD指令,繼續F8單步到PUSHAD的下一條指令。那就使用ESP定律進行程式的脫殼,在ESP寄存器上下硬體寫入斷點HW Break。
F9運行程式,程式會在剛才下的HW硬體斷點地址處斷下來。注意觀察EAX寄存器的值0045159C,通過對地址0045159C的反組譯碼發現了比較熟悉的Delphi反組譯碼進入點代碼,很顯然地址0045159C就是被加殼原程式的真實OEP的VA。其實,F7單步幾步走到地址004A1AF4處,跟進JMP到地址004A1AF1處就會發現原程式的真實OEP。
跟進JMP到地址004A1AF1處,JMP EAX指令中的EAX = 0045159C儲存的就是被加殼程式的真實的OEP的VA地址。
F7單步跟進到地址0045159C處,果然找到了Delphi的反組譯碼的進入點。
OK,被加殼程式的真實的OEP找到了,就可以對加殼程式進行記憶體的Dump和IAT表的修複。不過對於加殼程式找到OEP以後,建議使用Load PE和RECImport 工具或者Scylla來進行程式的記憶體Dump和IAT表的修複,比OD的OllyDump外掛程式更靈活。先用Load PE對該程式進行 完全脫殼 的記憶體Dump,在RECImport 中填入被加殼程式的真實OEP的RVA地址0005159C,自動擷取IAT表並剪下掉無效函數指標,修複抓取的記憶體Dump檔案即可實現脫殼。
OK,運行一下脫殼完成的程式,證明自己脫殼成功。
ORiEN脫殼分析文檔和脫殼以後的程式的:http://download.csdn.net/detail/qq1084283172/8898321
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。