在 Windows 上許多知名的執行程式都會因為其商業技術不希望被竊取,而替發布的程式套上一層保護殼,免除遭受駭客分析執行程式而找到實現程式技術的細節、甚至挖掘漏洞。
知名的保護殼如: UPX 殼用於壓縮執行程式的大小、VMProtect 殼用於原始碼碼混淆與虛擬機保護、Themida 殼與 WinLicense 殼穩定且難以分析的複合式保護技術。
本議程將基於 Windows 作業系統,介紹 C/C++ 開發時編譯器層級如何產生出執行程式,執行程式(PE)結構體,與裝載器(PE Loader)在進程創建時,如何實現完整執行程式的加載過程;進而深入分析惡意程式如何以 Process Hollowing(aka RunPE)技巧移花接木、注入自身執行程式到系統服務中。
最後議程重點將著重於如何以 C/C++ 實作完整一個簡單的執行程式保護殼,此部分將完整實作使程式從資源中解壓到內存、針對程式區段節正確重新分配內存位址、修正引入函數表與重定向處理。