《DotNet Web应用单文件部署系列》三、混淆dll文件

        众所周知,C#编译后的dll文件可被反编译,网上搜索”C# 反编译”会出现一大堆资料。为了提高反编译成本,我们必须对dll文件进行混淆处理。

 

        目前,C#混淆工具很多,我推荐obfuscar,它是一款免费开源的混淆工具,配置简单,支持命令行。

一、 从Github上下载Obfuscar。

  Obfuscar源码://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文档://docs.obfuscar.com/

四、 编写命令行

f:
cd F:\你的项目
F:\混淆工具\GlobalTools.exe 项目.xml

 

五、小彩蛋:js混淆工具

工具地址://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://github.com/toolgood/ToolGood.SqlOnline

 

       Layui官网要关了,挺难过的。