NET程序加殼說明
C#及VBNET開發(fā)的程序容易被反編譯,所以要達(dá)到一個(gè)很好的加密效果,除了在源代碼中檢查加密狗(加密鎖),或?qū)⒊绦虿糠执a放到加密狗(加密鎖)中運(yùn)行外,還強(qiáng)烈進(jìn)行混淆及加殼,且建議用多種工具結(jié)合使用,這樣才會(huì)安全,否則就很容易被反編譯或反混淆。
對NET程序進(jìn)行加密時(shí)需要用到以下四個(gè)工具:
-
Xenocode混淆工具
-
NETUnpack工具
-
NET Reactor工具
-
外殼加密工具10
加密流程如下:
1. 用Xenocode對要加密地程序進(jìn)行混淆,生成混淆后假設(shè)名字為“X”的程序, 如下:
-
運(yùn)行Xenocode后,“Application”頁中點(diǎn)“Add”添加要混淆的文件,如圖:
-
-
“Application”頁中“Preset” 設(shè)置中選中第二項(xiàng):“Aggressive …. ”,如圖:
-
-
“Protect”頁中的“Coltrol flow Obfuscation” 選項(xiàng)中,設(shè)置為“4”,如圖:
-
-
“Optimize”頁中保持默認(rèn),如圖:
-
-
“Virtualize”頁中選中“Enable”,如圖:
-
-
{zh1}在輸出頁中,點(diǎn)“BuildApplication”,如圖:
-
2. 混淆后假設(shè)名字為“X”的程序是封裝成WIN32的NET程序,我們需要得到?jīng)]有封裝前的NET程序,所以接著做釋出未封裝前的NET程序的操作,運(yùn)行X程序,再運(yùn)行NETUnpack工具,如下:
-
運(yùn)行混淆后假設(shè)名字為“X”的程序后,用NETUnpack工具進(jìn)行釋出,如圖:
-
-
使用NETUnpack釋出后的程序假設(shè)名字為:U-X
-
這時(shí)釋出來的U-X程序是不能運(yùn)行的,運(yùn)行會(huì)報(bào)錯(cuò),我們需要將它重新封裝起來
3. 使用NET Reactor對U-X程序進(jìn)行重新封裝并加密后,生成程序R:
-
運(yùn)行Net reactor,然后點(diǎn)open打開要轉(zhuǎn)換的文件:
-
-
轉(zhuǎn)換一定要選中以下選項(xiàng):
-
-
其中“Native ExeFile”, “Pre-JITMethods”要選中EXE文件后,才可以出現(xiàn)
-
其它選項(xiàng),也可以選中(建議選中),不過其它選項(xiàng),選中后,一定要測試一下,看是否可以運(yùn)行,如果不能運(yùn)行,可以將某些選項(xiàng)去掉,但前面的三個(gè)選項(xiàng)不能去掉
-
然后點(diǎn)進(jìn)行轉(zhuǎn)換,
-
-
轉(zhuǎn)換成功后,點(diǎn)打開轉(zhuǎn)換后的文件
4. 用外殼加密工具10對程序R,再加密,生成{zh1}可發(fā)行的程序。
-
加密時(shí)要用加密方式一,
-
-
如果轉(zhuǎn)換后可以運(yùn)行,加密后不能運(yùn)行,可以改用殼二就可以了: