天天看點

實作自動脫殼被加密的Net程式集

本次脫殼的測試對象是CodeLib 2 V14.9.2468.42911 更新日期是2006-10-5 目前的最新版本。

運作脫機程式到如下界面:

選中清單中的第二項,codelib.exe,選擇一個儲存路徑,點選dump按鈕,即可完成脫殼。

脫殼完的程式儲存到codedump.exe。

注意這個檔案是直接dump脫殼的結果,不能直接運作。

使用ildasm 反編譯,然後打開il檔案

查找 IL_0000:  call       void InFaceMaxtoCode::Startup()

替換為 //IL_0000:  call       void InFaceMaxtoCode::Startup()

即取消對 maxtocode 運作庫的引用。

然後運作 ilasm 編譯成exe檔案。

放在codelib的安裝目錄中即可正常運作了。

對 codelib注冊算法有興趣的可以下載下傳回去研究研究。

注意:先重命名安裝目錄中的codelib.exe,然後解壓縮放進去就可以運作了。

這個程式裡面還有很多anti,不過都不重要了,可以通過直接修改il來去掉anti。

脫殼機暫時不準備公開,DRT小組内部共享。

這次先簡單介紹一下原理,下次有機會再詳細介紹一下如何實作通用的記憶體程式集dumper。

這個dumper首先按照 pe dumper的原理,從記憶體裡面dump出pe檔案。

然後在在pe檔案中增加一個隻讀的鍛。用來放dump出來的il碼。

通過前面幾篇文章介紹的方法,利用net 2.0的新特性取道方法的methodbody,

然後重建header,datatable,将結果存入新鍛中,再修改相應method的rva指向新的header。

對所有的方法都這樣處理一遍,即可完成dump。

這種方式對壓縮殼,加密殼都有效。

繼續閱讀