木馬作者為了躲避查殺,常對程式進行「加殼」處理。加殼不僅能阻擋靜態分析,還能對抗動態調試,使殺毒引擎難以識別核心惡意代碼。加殼工具主要分為壓縮保護與加密保護兩大類。
此類工具(如 UPX、ASpack、Petite、PE-PACK、WWPack32、Shrinker)利用特定演算法壓縮程式體積,執行時在記憶體中解壓還原。因為解壓過程必須在記憶體中完成,具備記憶體掃描功能的殺毒軟體通常能有效查殺此類殼層下的木馬。
此類工具(ASProtect、tElock、Armadillo、SVK Protector、Xtreme-Protector、Obsidium、PElock 等)側重加密與反逆向功能,甚至能鎖定自身記憶體進程防止外部注入。殺毒軟體極難穿透此類殼層進行特徵碼匹配。
脫殼首要步驟是識別殼類型。PEiD 是經典查殼工具,能快速判斷檔案使用何種加殼器。以 7KB 小木馬 Cmdshell.exe(開放 54088 連接埠實現遠端命令列控制)為例,PEiD 偵測出其為 UPX 加殼。
使用通用的 UPX Shell:開啟檔案 → 切換至「Compress」分頁 → 選擇「Decompress」 → 點擊「GO」。脫殼後檔案從 7KB 膨脹至 20KB,標誌著殼層成功移除。
PE-Scan 能識別多數主流殼類型並顯示入口點(OEP),便於手動脫殼。測試 ASProtect 加殼樣本時,PE-Scan 僅能識別無法脫殼。此時需引入 StripperX:開啟檔案 → 點擊「Unpack」即可生成脫殼檔案。注意版本對應關係:StripperX 2.07 支援 ASpack 2.xx / ASProtect 1.2x,2.11 版支援 ASProtect 1.3~2.0。
脫殼需「對症下藥」:先用 PEiD/PE-Scan 確認殼類型,再尋找對應脫殼工具。脫殼後的木馬失去保護,幾乎所有殺毒引擎均可查殺。日常下載可疑程式時,建議先檢查是否加殼,若發現加殼應提高警覺並拒絕執行。