吾愛破解 培訓第一課:破解基礎知識之介紹常見工具和殼的特徵 筆記
吾愛破解 培訓第一課:破解基礎知識之介紹常見工具和殼的特徵 筆記
[《吾愛破解培訓第一課:破解基礎知識之介紹常見工具和殼的特徵》講師:Hmily](https://www.52pojie.cn/thread-378612-1-1.html)
課件內容
一個程式從編譯出來的時候一般都是沒有殼的,不同編譯器編譯出的無殼程式也是不相同的,認識了不同編譯器編譯出來的無殼的程式,再去看無殼程式被加殼程式加殼後的樣子就輕鬆很多,經過對比從而瞭解不同語言無殼程式和加殼後程序的特徵是什麼,特徵主要從“入口點程式碼”、“程式區段”和“載入模組”等資訊來確定。
一:程式是什麼語言編譯的
- VC6特點:入口點程式碼是固定的程式碼,入口呼叫的API也是相同的,其中有的push地址不同程式可能不同;區段有四個也是固定的.text、.rdata、.data和.rsrc。
- VS特點:入口點只有兩行程式碼,一個CALL後直接JMP,第一個CALL進去後呼叫的API也是相同的;區段相對於VC6多了一個.reloc。
- 易語言特點:可以從程式裡找一些call的呼叫最終都會走到上面核心程式碼圖位置(文字不太好表達),這個方法可以區分和VC的區別,非獨立編譯比較容易識別,入口特徵和模組特徵都有krnln.fnr。(易語言編譯無殼程式分,獨立編譯和非獨立編譯,其中獨立編譯是呼叫VC的連結程式編譯的,所以從區段和入口程式碼特徵和VC相同。)
二:如何識別加殼
-
通過[PEiD](http://down.52pojie.cn/Tools/PEtools/PEiD 0.95.rar)、Exeinfo PE
PEiD、FFI、FastScanner、RDG Packer Detector這類程式都是通過目錄下的userdb.txt(查殼程式不同可能資料庫名有出入)資料庫進行加殼程式特徵對比的,由於userdb.txt檔案都是好多年前的了,全球基本都在用fly在09年釋出的UpKPEiDSign,即使有新的也都基於他製作的版本之上進行更新的,而且更新都沒有太好效果,由於原理都是通過加殼程式的特徵進行對應,而這些加殼特徵都是個人總結而來,對加殼程式的模糊搜尋對比造成可靠性不高,特別是對於VMProtect這類加密殼程式,經常被識別成一些算七八糟都沒見過的加殼內容,特別是顯示UPolyX,基本都是誤報,對新手的誤導很嚴重,但對於傳統的一些壓縮殼的識別效果還是很好的,當然了,有利有弊,正是由於它的開放性特徵庫,也方便給大家提供自己編寫特徵的方法,來識別一些新的殼,期待大家能做出自己的加殼特徵來。 Exeinfo PE屬於新一代查殼工具,作者目前還在更新,它和PEiD的區別可能就在於它的特徵庫是作者自己維護,不支援外部修改,新版好像也開始支援外部特徵庫了,這款查殼工具的加殼特徵庫比較準確而且範圍很廣,如Themida、WinLicense、VMProtect、ZProtect、Shielden都可以輕鬆識別出來,但對於具體加殼程式的版本都是模糊的,其實個人認為加殼版本真的不重要,這個後面再具體說道,Exeinfo PE可以說是目前可以說最好的查殼工具了,推薦大家使用。
-
通過入口特徵和區段特徵來識別
區段資訊:可以通過PEiD的EP處點選獲取到. 入口特徵:可以通過OllyDBG載入獲得,載入後可以按一下“Ctrl+A”,讓OD分析一下程式碼,就可以把入口點一些特徵字串分析出來.(對於Shielden、Safengine、VProtect這類加殼程式都可以使用這種方法判斷出來)
三:程式加的是什麼殼
windows程式狀態大體可以分為以下幾種型別:
未加殼、壓縮殼、傳統加密殼、程式碼虛擬化保護、.Net程式加密等
課後問題總結答疑
1.簡單脫殼方法
-
找OEP
-
Dump映象檔案
-
修復IAT
IAT RVA = 00432000 - 00400000 = 32000
IAT 大小=00432554 -00432000 =554
-
修復重定位表、修復資源、修復VMOEP等。
2.ASLR(Address space layout randomization)是一種針對緩衝區溢位的安全保護技術,通過對堆、棧、共享庫對映等線性區佈局的隨機化,通過增加攻擊者預測目的地址的難度,防止攻擊者直接定位攻擊程式碼位置,達到阻止溢位攻擊的目的。
-
CFF Explorer檢視PE頭控制ASLR的位置:
Nt Headers->File Header->Characteristics->Click here->Relocaation info stripped from file
-
LordPE檢視PE頭控制ASLR的位置:
特徵值->...->重定位已分離
3.win7無法執行由於ASLR(PE位置)和重定位的原因
-
去掉ASLR---【ASLR關閉工具】OD載入每次入口地址不一樣:ttp://www.52pojie.cn/thread-377450-1-1.html
-
不去掉ASLR---修復重定位
4.作業解答:
1、問脫殼外掛有異常,提示記憶體無法讀取。
解答:不要用win7/win8脫殼,換論壇xp虛擬機器,原因是ASLR基地址隨機化脫殼外掛獲取的地址不對。
2、問為什麼脫殼地址和視訊裡的地址不同。
解答:如上一問題,不要用win7/win8脫殼,換論壇xp虛擬機器,原因是ASLR基地址隨機化導致地址不同。
3、問異常法脫殼去掉忽略異常後怎麼無法暫停。
解答:OD外掛--StrongOD--Options--Skip Some Exceptions選項取消,重啟OD再試試。
4、問 xp 上脫完殼到win7/win8系統上就無法運行了。
解答:原因一:IAT未完全修復成功導致的,重新修復,不要用脫殼外掛,使用LordPE來dump再用ImpREC(最好用Scylla修復,ImpREC對一些新系統的API支援不好)來修復IAT(千萬不要使用OllyDump外掛來脫殼,老東西bug多,脫完無法執行不計其數)。原因二:由於ASLR和重定位表問題,詳見:http://www.52pojie.cn/thread-382462-1-1.html
5、問脫完殼用Exenfo PE查殼顯示“Unknown Packer-Protector”未知。
解答:知道脫完就好了,脫完的vs2008的程式Exenfo PE沒能識別出來,但根據它的提示使用它的外掛“advance scan”是可以掃描出來的,可以試一下。
6、問如何知道是否脫殼成功。
解答:簡單的說脫完殼後可以正常執行,OEP入口程式碼為無殼程式碼特徵(我第一課裡說了什麼是無殼程式),IAT解密完、資源沒有被壓縮即可。
7、問如何完美脫殼和處理重定位。
解答:轉了一些fly的帖子,大家可以參考:
http://www.52pojie.cn/thread-382879-1-1.html
http://www.52pojie.cn/thread-382872-1-1.html
http://www.52pojie.cn/thread-382870-1-1.html
8、關於ximo脫殼教程和論壇虛擬機器機中OD使用可能遇到的問題。
解答:OD不要直接在虛擬機器的共享資料夾載入檔案,請把檔案複製到虛擬機器磁碟上再進行除錯。
課件工具
-
其他工具見愛盤:http://down.52pojie.cn/Tools/
課件資源
360雲盤下載:
https://yunpan.360.cn/surl_y3GCKpiI2fX 提取碼:7693
百度網盤下載:
連結: https://pan.baidu.com/s/1z9WQeYgUGxcurVD2lKfNeg提取碼: e2su
解壓密碼:
www.52pojie.cn
本文來自部落格園,作者:Theseus‘Ship,轉載請註明原文連結:https://www.cnblogs.com/yongchao/p/15753577.html