dotfuscator使用方法

轉載自:http://hi.baidu.com/free3people/item/0fba87d34091df15d80e4400
web


轉載自:http://hi.baidu.com/free3people/item/0fba87d34091df15d80e4400安全

dotfuscator如何對.net程序進行混淆保護對於程序代碼的保護,網上有不少資料,有的說混淆,有的說加密,我比較支持混淆的方法,這樣可讓反編譯勞工,頭暈一陣子,哈哈開玩笑。對於加密若是不是不得已,我想沒有必要。加密性能消耗比較大。架構

dotfuscator相信作程序的人不少都知道,dotfuscator與XenoCode都是代碼混淆工具,作爲保護代碼安全的一個工具。既然說到.net的程序,那固然要扯扯dotfuscator,都同屬微軟的產品,兼容性絕對是天生一對。函數

閒話很少說,說最直接的東西,最實用東西。工具

下面來講說dotfuscator的用法,我用的是Dotfuscator Professional Edition 4.2版,Dotfuscator的版本有多好,具體請看微軟官方說明性能

http://msdn.microsoft.com/zh-cn/library/ms227255(v=VS.80).aspxui

用法一 使用默認混淆加密

打開軟件點擊input選項卡,把dll或exe添加,Libray不要選,不然的話,幾乎全部的公共函數變量,不會被加密和混淆,能夠很容易的看到代碼spa

 

點擊build選項卡,在目標目錄(destination directory)選取你想把dll生成到的位置,如F盤:/混淆目錄.net

其它不用設置,直接點build,會有提示是否要保存項目。點擊否

 

生成的dll,再用.net Reflector 進行反編譯,看一下。

 

看到的結果是,類名重命名,方法名重命名 全都變成a,b,c

這種方法有個缺點,對於三層架構來講,他的dal層語句仍是有在。比較容易看懂。

用法二 自定義混淆,類名,方法名不變。

可是方法裏面的內容變成只有一句 // This item is obfuscated and can not be translated.

打開軟件點擊input選項卡,把dll或exe添加

 

在options的選項中,這是全局配置選項:
把 Disable String Encryption 設爲 NO,即啓用字符串加密;檢查 Disable Control flow、Dsiable Renaming爲NO,即保證控制流和混淆功能打開,其餘默認 

 

Rename 選項勾選「use enhanced overload induction」(使用加強模式),注意:不要勾選下方的「 Do not suppress on serializable types」,即序列化類型的變量不加密,不然編譯後可能異常; 「Renaming Scheme」 選擇「Unprintable」(不可打印字符,即亂碼),也能夠選擇其餘如小寫字母、大寫字符、數字的方式。 

 

點擊build選項卡,在目標目錄(destination directory)選取你想把dll生成到的位置,如F盤:/混淆目錄

其它不用設置,直接點build,會有提示是否要保存項目。點擊否

生成的dll再用.net Reflector 進行反編譯,看一下。

 

能夠發現函數體內的代碼已經看不到了,提示:「  This item is obfuscated and can not be translated.」;字符串也變成了亂碼,函數名稱也不可見了

 

看起來是比較強大。可是有個缺點。由於dll是須要被web程序調用的,web的程序調用的方法,以前是使用類名,及方法名的。因此推薦不要作rename這步驟。

也就是在Options選項時,Dsiable Renaming設置爲NO.而Rename裏面就不要去設置了

 

DotFuscator其特色是混淆,一個很重要的方面是重命名。然而重命名又致使沒法引用的問題。

這要求須要對幾個DLL 同時混淆,對於WEB 來講,頁面cs能夠發佈成一個DLL,將全部層的DLL一塊兒混淆,能夠解決不少問題。這裏對WEB DLL不進行重名,以保證頁面文件能夠訪問。

對於說在混淆後,容量會變小.我以爲這不是絕對的,個人容量是變大了


如下屬於本做者:

經測以後,我以爲仍是能起到必定的防止菜鳥級別,可是真的要認真看起來,那也是很容易看懂的。

還有一點就是一些本身寫的類,已經對象名,方法是沒法更換名字,因此仍是不安全,特別是最重要的都沒有作到。

相關文章
相關標籤/搜索