常見脫殼的查詢OEP的方法--黑鷹教程
OEP:程式的入口點,軟體加殼就是隱藏了OEP(或者用了假的OEP), 只要我們找到程式真正的OEP,就可以立刻脫殼。 PUSHAD (壓棧) 代表程式的入口點
POPAD (出棧) 代表程式的出口點,與PUSHAD相對應,一般找到這個OEP就在附近拉。
常見尋找OEP脫殼的方法 方法一: 1.用OD載入,不分析程式碼! 2.單步向下跟蹤F8,是向下跳的讓它實現 3.遇到程式往回跳的(包括迴圈),我們在下一句程式碼處按F4(或者右健單擊程式碼,選擇斷點——執行到所選) 4.綠色線條表示跳轉沒實現,不用理會,紅色線條表示跳轉已經實現! 5.如果剛載入程式,在附近就有一個CALL的,我們就F7跟進去,這樣很快就能到程式的OEP 6.在跟蹤的時候,如果執行到某個CALL程式就執行的,就在這個CALL中F7進入 7.一般有很大的跳轉,比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETE的一般很快就會到程式的OEP。 方法二: ESP定理脫殼(ESP在OD的暫存器中,我們只要在命令列下ESP的硬體訪問斷點,就會一下來到程式的OEP了!) 1.開始就點F8,注意觀察OD右上角的暫存器中ESP有沒出現。 2.在命令列下:dd 0012FFA4(指在當前程式碼中的ESP地址),按回車! 3.選種下斷的地址,下硬體訪問WORD斷點。 4.按一下F9執行程式,直接來到了跳轉處,按下F8,到達程式OEP,脫殼 方法三: 記憶體跟蹤: 1:用OD開啟軟體! 2:點選選項——除錯選項——異常,把裡面的忽略全部√上!CTRL+F2過載下程式! 3:按ALT+M,DA 開啟記憶體鏡象,找到第一個。rsrc.按F2下斷點, 然後按SHIFT+F9執行到斷點,接著再按ALT+M,DA 開啟記憶體鏡象,找到。RSRC上面的CODE,按 F2下斷點!然後按SHIFT+F9,直接到達程式OEP,脫殼! 方法四: 一步到達OEP(前輩們總結的經驗) 1.開始按Ctrl+F,輸入:popad(只適合少數殼,包括ASPACK殼),然後按下F2,F9執行到此處 2.來到大跳轉處,點下F8,脫殼之! 方法五: 1:用OD開啟軟體! 2:點選選項——除錯選項——異常,把裡面的√全部去掉!CTRL+F2過載下程式! 3:一開是程式就是一個跳轉,在這裡我們按SHIFT+F9,直到程式執行,記下從開始按F9到程式 執行的次數! 4:CTRL+F2過載程式,按SHIFT+F9(次數為程式執行的次數-1次 5:在OD的右下角我們看見有一個SE 控制代碼,這時我們按CTRL+G,輸入SE 控制代碼前的地址! 6:按F2下斷點!然後按SHIFT+F9來到斷點處! 7:去掉斷點,按F8慢慢向下走! 8:到達程式的OEP,脫殼! |
轉:http://baike.baidu.com/view/990370.html?fromTaglist