自己的脫殼過程(SoftDefender)

OEP的部分簡略一點吧,主要是想寫下這個IAT的修復,其實也沒什麼技術含量,因爲技術菜,跟不出如何不讓殼加密IAT,權衡之下只好用這個連自己也鄙視的笨辦法了

Too eagerly want to unpack a powerful packer, however old one

OEP到達方法:

一 用API監視工具查找CreateProcess的調用地址(當然也可以下硬件斷點),然後把程序運行起來再在OD轉到這個地址(沒運行起來之前代碼還沒解碼,這個地方的代碼還非常亂)

二 在這上面找到一個je跳轉,下一個硬件斷點,每次運行的時候改下標誌位就行,直接patch的話一定會被檢測到。

三 在je斷下之後在401000那裏下個內存訪問斷點,然後再自己單步一段(斷下來的時候是開始解碼代碼段了,再走一段是要把碼全部解開),現在來搜索下delphi的特徵碼直接到OEP(或者下API斷點,當然也要是硬件斷點)

來到OEP之後,就開始修復吧

隨便找一個APIcall,來到IAT的地方,發現主要是有兩種格式,一種是以15開頭的,一種是以40開頭的


找一個以15開頭的函數,隨便跟了幾步就到API了,這種類型的用IR可以快速解決。

但是以40開頭的函數卻怎麼走也到不到API(難道看漏了?)

先不管,能修復的先修復掉,最後剩下6


然後再拿來一個delphi的無殼程序。在有殼的程序中分別向那6個無效指針下斷,

斷下之後然後回溯到最初的那個調用(你會在堆棧窗口看到返回地址)

例如最初的調用地址是A,然後也到無殼的delphi程序的地址A處看下調用的API是什麼,

然後在IR裏面雙擊無效指針,自己把庫和函數填進去就可以了


還有五個指針也是一樣的,修復之後即可運行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章