眾所周知,C#編譯後的dll檔案可被反編譯,網上搜索”C# 反編譯”會出現一大堆資料。為了提高反編譯成本,我們必須對dll檔案進行混淆處理。

目前,C#混淆工具很多,我推薦obfuscar,它是一款免費開源的混淆工具,配置簡單,支援命令列。

一、 從Github上下載Obfuscar。

  Obfuscar原始碼:https://github.com/obfuscar/obfuscar

二、 編譯生成GlobalTools。

  

我還是比較喜歡單檔案。

三、 編輯xml檔案

<?xml version='1.0'?>
<Obfuscator>
<Var name="InPath" value="F:\yourpath\bin\Release\net5.0" />
<Var name="OutPath" value="F:\yourpath\libs" />
<Var name="KeepPublicApi" value="false" />
<Var name="HidePrivateApi" value="true" />
<Module file="$(InPath)\ToolGood.TextFilter.App.dll">
<SkipField type="PetaPoco.Core.PocoData" attrib="public" name="_converters" /> <SkipType name="ToolGood.TextFilter.Application.HtmlFilterApplication" skipMethods="true" skipFields="false" skipProperties="false" skipEvents="false" />
<SkipType name="ToolGood.TextFilter.Application.JsonFilterApplication" skipMethods="true" skipFields="false" skipProperties="false" skipEvents="false" />
<SkipType name="ToolGood.TextFilter.Application.MarkdownFilterApplication" skipMethods="true" skipFields="false" skipProperties="false" skipEvents="false" />
<SkipType name="ToolGood.TextFilter.Application.TextFilterApplication" skipMethods="true" skipFields="false" skipProperties="false" skipEvents="false" />
……………………
</Module>
</Obfuscator>

  Var標籤 InPath 為 輸入目錄。

  Var標籤 InPath 為 輸出目錄。

  Module標籤 為需要混淆的dll檔案路徑。

  SkipType標籤,指定不需要混淆的類名,主要做為對介面。

  SkipField標籤,指定不需要混淆的變數名,反射時需要。

  詳情可參考Obfuscar文件:https://docs.obfuscar.com/

四、 編寫命令列

f:
cd F:\你的專案
F:\混淆工具\GlobalTools.exe 專案.xml

五、小彩蛋:js混淆工具

工具地址:https://github.com/toolgood/ug

Js程式碼如下:

1 setInterval(function() {
2
3 debugger
4
5 }, 100);

壓縮後:

!function(n){!function(n,t,r,u){n[r](function(){},100)}(this,0,n(0,1,2,3,4,2,1,5,6,7,8))}(function(n){return function(){for(var t=arguments,r="",u=0,f=t.length;u<f;u++)r+=n[t[u]];return r}}(["s","e","t","I","n","r","v","a","l"]));

注:js混淆工具不支援es6語法,如let。

後記:

最近忙於編寫SQL online軟體,一款主打資料安全的軟體,防登入資訊被記錄、傳輸加密、水印、IP黑名單、機器碼、SQL記錄、記錄update/delete 修改前資料等等。

  SQL online:https://github.com/toolgood/ToolGood.SqlOnline

Layui官網要關了,挺難過的。