使用 Dotfuscator 對代碼進行混淆

Dotfuscator 簡介

做爲一種高級語言,c# 類庫很容易被 .NET Reflector 這樣的工具反編譯。攻擊者很容易從代碼中找到數據庫鏈接方式,加解密方法等重要信息。使用 dnspy 這樣的工具甚至能夠隨意修改類庫,下斷點進行調試。html

因此咱們須要用 Dotfuscator 等工具對代碼進行混淆。正則表達式

Dotfuscator 使用方法:https://www.preemptive.com/dotfuscator/pro/userguide/en/index.html數據庫

 

Dotfuscator 使用流程

1 在 Input 中選擇須要輸入的類庫(這些類庫的依賴項必須在文件所在目錄)c#

2 在 Settings 中設置臨時目錄和輸出目錄。ide

3 合理設置混淆參數(見下文)。工具

4 保存工程文件,方便下次使用。性能

5 開始混淆,在輸出目錄獲取混淆後的類庫,在反編譯軟件中驗證混淆結果。ui

 

Dotfuscator 的保護措施

第一層保護:模糊轉換 ,在反編譯後增長閱讀難度。(包括:Renaming, Control Flow, String Encryption)加密

第二層保護:運行時檢測,防止他人篡改程序(包括:Tamper Check , Debug Check , Root Check , Shelf Life Check)(本文不做介紹)spa

其餘保護:Removal , Watermarking(本文不做介紹)

Renaming

對命名空間,類,方法,字段進行重命名以增長閱讀難度。

對於賣控件的公司來講,須要勾選 Library 選項,以防止 public 的類被重命名。若是類被重命名了那麼其餘人將沒法調用這個類庫。

對於賣軟件的公司來講,須要取消勾選 Library 選項,這樣全部的類都會被重命名。

類的屬性每每沒法混淆,若是須要混淆的話,儘可能使用方法代替屬性。

Dotfuscator 利用了 c# 的重載特效,將徹底不一樣的方法重命名爲同一個方法,被稱爲 Overload Induction。

勾選 Use Enhanced Overload Induction 。

右側的 Renaming Scheme 建議選擇 Unprintable ,會將把類名重命名爲一些不可打印的字符。這些字符沒法再顯示器上顯示出來。

 

Overload Induction 這項技術不適用於 xaml 代碼,使用反射和指定入口點的配置文件的狀況。(wpf 控件大量使用 xaml ,不能進行 overload induction)

若是勾選了  Use Enhanced Overload Induction 選項時,須要將不須要進行重命名的類庫在 Exclude 界面中勾選以排除重命名列表。

Control Flow

Control Flow 會打亂方法的執行順序,增長大量無用的分支,以增長閱讀難度。但有時會影響到性能。若是對性能有要求的話能夠將類庫排除出列表。

String Encryption

場景:在軟件的某個位置彈窗:「您的軟件是盜版的!」。

對軟件反編譯後尋找這個字符串後能夠很方便的定位到程序的關鍵位置,經過篡改程序能夠很方便的繞過核心的受權機制。

若是對字符串進行加密,反編譯後將找不到這段話。

須要強調的是,對於 const string 常量,字符串加密功能將不起做用。因此建議在編寫代碼時將重要的常量改成 static string   !!!!!!!!!!!!!!!!!!!!!

首先須要將 Disable String Encryption 改成 No (默認爲 Yes)

 

 

而後將須要混淆字符串的類庫勾選

 

 

 部分勾選

 Dotfuscator 全部的勾選均可以精確到類,方法和字段。

可使用篩選器篩選出符合要求的匹配對象。這樣在編寫代碼時能夠對特定的類採用類似的命名規則以知足篩選器。(篩選器支持正則表達式)

具體使用方法見官方文檔:https://www.preemptive.com/dotfuscator/pro/userguide/en/index.html

使用批處理進行混淆

https://www.cnblogs.com/aitong/p/10627930.html

故障處理

https://www.preemptive.com/dotfuscator/pro/userguide/en/getting_started_troubleshooting.html#pctoc-dotfuscator-can39t-find-a-ilasmildasm

我在更換電腦時碰到過一個報錯:

Could not find a compatible version of ildasm to run on assembly D:\Dotfuscator\1.exe.  This assembly was originally built with .NET Framework v4.0.30319.
Build Error.

能夠參考這篇文章:https://blog.csdn.net/winnyrain/article/details/17141331?utm_source=copy

相關文章
相關標籤/搜索