BC++
程序脫殼後,利用ImportREC
的自動修復是不行的,依舊打不開,需要手動查找IAT
範圍。
-
重新打開OD,載入原程序,找到
OEP
,在下方的第一個call
,選中後按下回車,進入裏面尋找IAT
-
進入
CALL
後會發現一連串的jmp dword ptr ds:[xxx]
代碼,往上翻,直到這個CALL
的段首處 -
選中第一行,右鍵 → 數據窗口中跟隨 → 內存地址,去左下角的數據窗口中,右鍵 → 長型 → 地址
-
可以看到段首的地址(
RVA
),比如jmp dword ptr ds:[4E010C]
,起始位置就是4E010C-400000 = E010C
(需要減掉段地址400000) -
然後可以拉到最後一個
jmp
,就是終止位置,減去起始位置,就是Size
大小(其實可以統一寫1000
) -
有了
RVA
和Size
後,就找到了IAT
,然後進入ImportREC
,填入相應值,獲取輸入表,修復脫殼文件
PS:
BC++
、Delphi
程序的事件也與一般程序不同,需要使用DeDe
來分析,找到相應的按鈕事件和窗體事件,複製地址再去OD中定位,斷點,調試分析。