1. 程式人生 > 其它 >加殼工具簡單使用

加殼工具簡單使用

時間20210107,環境winxp
介紹一些加殼工具和和它們的簡單使用。其中加殼工具都可以在看雪學院上下載。為了方便描述,就先寫了一個原程式,原程式的邏輯很簡單,程式碼如下。

#include<stdio.h>  
int main()  
{  
	int i = 5;  
	scanf("%d",&i);  
	while(i--)  
	{  
		printf("Hello World%d\n",i);  
	}  
	return 0;  
}  

1.壓縮殼

簡單介紹下UPX。UPX殼使用命令列的方式,命令格式為upx [-123456789dlthVL] [-qvfk] [-o file] file..

。將src.exe(待加殼檔案)放到該目錄下,接下來簡單介紹下UPX的使用。

使用命令“upx -h”可以檢視幫助,如下,有命令的介紹。

使用命令“upx 待加殼程式.exe”,即可對原程式進行加殼,這裡是“src.exe”,可以看到下面顯示了壓縮的資訊,如下圖所示,File size(檔案大小)由184401變為31744。Ratio為壓縮比,為17.21%。這時,src.exe將被壓縮後的程式替換。

使用命令“upx src.exe -o shell.exe”,可以保留原始程式,輸出的加殼程式為shell.exe。

然後利用exeinfo pe(可以進行查殼)對原程式和加殼程式進行分析。下圖是加殼後的分析結果。可以看到在紅色框線中,檢測出了程式經過了upx加密。並且連版本都可以分析出來,為“3.09”。


同時UPX還可以對壓縮後的程式進行解壓,使用命令“upx -d shell.exe”,可以對程式進行解壓縮。

2.加密殼

常見的加密殼有ASProtect、Armadillo(也稱穿山甲,是一款應用範圍較廣的商業保護軟體)、EXECryptor(一款商業保護軟體,該殼的特點是反除錯技術比較強大)等。主要介紹ASProtect。
首先我們簡單看下它的使用方法。如下圖所示,對要加殼的原程式和輸出的加殼後程序進行選擇。這裡使用的原程式和UPX中使用的原程式是同一個。

然後進入到Modes選項看,點選“Add Mode”,然後選中“Is this Mode Active”,並給該mode進行命名,如下圖所示。


然後進入Protection選項卡,點選Protect即可,也可以點選工具欄上的小閃電,如圖所示,如果出現圖中所示字樣,說明加殼成功,我們進入到輸出檔案的目錄檢視。

其中exeinfo pe的查殼結果如下。

3.虛擬機器殼(虛擬機器保護軟體)

目前虛擬機器已經稱為目前最流行的保護趨勢,但該項技術卻是以效率換安全的。一條原始彙編指令經過VM的處理,往往會膨脹幾十倍設定幾百倍,執行速度大大降低。正因如此,VM保護通常提供SDK方式,一般只需要將核心的程式碼通過VM保護起來,這樣在一定程度上可以緩解它的缺點。下面是使用VMProtect加殼工具預設的加密方式,涉及到SDK的話就需要進一步研究了。
下圖是ollydbg分析原程式,這裡,把從地址00401050處的程式碼作為核心程式碼。

接下來,開始使用VMProtect對程式進行加密,如圖所示,是工具的介面,因為VMProtect的高版本就需要付費了,所以這裡使用版本1.22.3。

點選左上角的資料夾,選擇檔案後,點選紅色框線內視窗內的dump選項卡,如下圖所示。

然後使用ctrl+g(這個和od一樣),跳轉到剛才在ollydbg中找到的地址00401050處,如下圖所示。

然後點選左上角那個發綠色光的圖示上“new procedure”,就會彈出如下圖所示的對話方塊。

點選ok後,進入如下介面,這就是要加密的指令,VMProtect會自動選擇合適的結束地址,但也可以手動,這裡就使用自動的就好。

然後點選綠色的三角形(“compilation”編譯的意思),如下圖所示。

點選yes就可以了,可以看到在當前的目錄下,生成了“src.vmp”,“src.vmp.exe”兩個檔案,這個exe檔案就是加密後的檔案了。
因為VMProtect是對區域性指令進行加密,因此可以通過ollydbg更直觀地看下加密後的指令。如下圖所示,可以看到從地址00401050處開始,指令變得很奇怪。