zoukankan      html  css  js  c++  java
  • 《DotNet Web应用单文件部署系列》三、混淆dll文件

            众所周知,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:yourpathinRelease
    et5.0" />
      <Var name="OutPath" value="F:yourpathlibs" />
      <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官网要关了,挺难过的。

  • 相关阅读:
    HDOJ/HDU 2560 Buildings(嗯~水题)
    HDOJ/HDU 2555 人人都能参加第30届校田径运动会了(判断加排序~)
    POJ1703Find them, Catch them
    BZOJ2303: [Apio2011]方格染色
    BZOJ2809: [Apio2012]dispatching
    POJ1611The Suspects
    BZOJ2006: [NOI2010]超级钢琴
    BZOJ2288: 【POJ Challenge】生日礼物
    BZOJ1150: [CTSC2007]数据备份Backup
    洛谷P1316 P1824
  • 原文地址:https://www.cnblogs.com/toolgood/p/15338812.html
Copyright © 2011-2022 走看看