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

《DotNet Web应用单文件部署系列》三、混淆dll文件的更多相关文章

  1. (Unity)Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进展混淆,避免被反编译

    Unity自定义Debug日志文件,利用VS生成Dll文件并使用Dotfuscated进行混淆,避免被反编译. 1.打开VS,博主所用版本是Visual Studio 2013. 2.新建一个VC项目 ...

  2. 《DotNet Web应用单文件部署系列》一、pubxml文件配置

    很多人想用DotNet开发软件赚点外快子补添家用,但心里总放不下心来,担心被人破解了.好消息是去年发布的DotNet 5支持单文件部署,不同于DotNet 3运行时将文件释放到临时文件夹内,DotNe ...

  3. 《DotNet Web应用单文件部署系列》二、打包wwwroot文件夹

    在这篇文章中,你将学到web缓存规则,文件传输中用到的压缩格式,以及如何手写代码响应请求.最后还能学到快速打包wwwroot文件夹组件用法. 一.了解Response Header 当第一次加载程序时 ...

  4. Quartz定时任务学习(二)web应用/Quartz定时任务学习(三)属性文件和jar

    web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...

  5. web前端知识大纲:系列三 html篇

    web前端庞大而复杂的知识体系的组成:html.css和 javascript 三.HTML 1.BOM BOM 是 Browser Object Model的缩写,即浏览器对象模型,当一个浏览器页面 ...

  6. C# 文件读写系列三

    1.读写文本文件 在C# 文件读写系列二中列举了相当多的读写文本文件的方法,大致有以下几种: (1).通过静态类File的静态方法来进行文本文件的读写,主要有ReadAllBytes().ReadAl ...

  7. PE文件学习系列三-PE头详解

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 最近比较忙 ...

  8. Windows phone开发之文件夹与文件操作系列(一)文件夹与文件操作

    Windows phone7中文件的存储模式是独立的,即独立存储空间(IsolatedStorage).对文件夹与文件操作,需要借助IsolatedStorageFile类. IsolatedStor ...

  9. 驱动文件中只有cat/inf/dll文件,怎么安装

    网上下载了一个驱动,里面包含文件只有cat/inf/dll文件,怎么安装? 1.计算机-右键-管理-设备管理器,找到要装驱动的设备上 2.右键-更新驱动程序-浏览到本地的这个驱动文件夹 3.开始安装

随机推荐

  1. flutter中将widget转为base64

    flutter中可以通过RepaintBoundary widget中的toImage方法将页面中的widget转为base64. 如何使用? 首先要在全局定义一个global key,分配给Repa ...

  2. 【MyBatis系列5】MyBatis4大核心对象SqlSessionFactoryBuiler,SqlSessionFactory,SqlSession,Mapper

    前言 前几篇篇我们简单讲解了MyBatis的简单用法,以及一对一和一对多以及多对多的相关动态sql查询标签的使用,也提到了嵌套查询引发了N+1问题,以及延迟加载相关功能,本篇文章将会从MyBatis底 ...

  3. JDBC基础篇(MYSQL)——使用statement执行DML语句(insert/update/delete)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day02_statement; import java.sql.Connection; import java.s ...

  4. Windows系统搭建Redis集群三种模式(零坑、最新版)

    目录 主从复制 修改配置文件 启动各节点 验证 哨兵模式 修改配置文件 启动实例 验证 集群模式 修改配置文件 启动实例 验证 主从复制 新建以下三个目录,用来部署一主二从 redis 的安装在另外一 ...

  5. mac下编译安装grafana

    下载grafana源码 从grafana git 仓库下载指定的分支. 编译后端 我下载的时候,grafana的最新release是7.3.7,其需要安装go 1.15版本 生成可执行文件 进入项目根 ...

  6. Linux系统的vsftpd服务配置

    概述: FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议之一 , 它为系统提供了通过网络与远程服务器进行传输的简单方法FTP 服务器包的名称为 VSFTPD , 它代表 V ...

  7. Spring系列之JDBC对不同数据库异常如何抽象的?

    前言 使用Spring-Jdbc的情况下,在有些场景中,我们需要根据数据库报的异常类型的不同,来编写我们的业务代码.比如说,我们有这样一段逻辑,如果我们新插入的记录,存在唯一约束冲突,就会返回给客户端 ...

  8. Linux新加磁盘并挂载到目录

    步骤:1.分区  ----> 2.格式化  ----> 3.挂载 一.查看当前情况 1. 2. 二.磁盘分区 fdisk /dev/sdb 1.输入n,表示添加一个新的分区 2. e ex ...

  9. openswan协商流程之(一):main_outI1()

    主模式第一包:main_outI1() 1. 序言 main_outI1()作为主模式主动发起连接请求的核心处理函数,我们可以通过学习该函数的处理流程来探究openswan中报文封装的基本思想.如果之 ...

  10. IPsec NAT-T说明和环境搭建

    1. IPsec与NAT的关系 NAT作为一个IPV4的地址转换协议,它最初的目的是用来最解决IPv4地址不足的问题.通过NAT协议,局域网内的多个主机可以共同使用一个公网地址,这在很大程度上减轻了I ...