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官网要关了,挺难过的。

  • 相关阅读:
    python3爬取咪咕音乐榜信息(附源代码)
    python3通过Beautif和XPath分别爬取“小猪短租-北京”租房信息,并对比时间效率(附源代码)
    在windows7 32ibt安装MongoDB数据库的方法及连接失败解决方案
    GoWeb开发_Iris框架讲解(一)
    Web项目开发介绍及实战项目介绍
    DAY7学习笔记
    DAY6课下作业
    DAY6学习笔记
    DAY5课下作业
    DAY5学习笔记
  • 原文地址:https://www.cnblogs.com/toolgood/p/15338812.html
Copyright © 2011-2022 走看看