.net 混淆工具

news2024/11/26 4:22:35

obfuscation tools

.net 社区有很多混淆工具, 比如这个清单: https://github.com/NotPrab/.NET-Obfuscator
比较有名的商业工具有 .NET REACTOR https://www.eziriz.com/,

开源软件中, 最受欢迎的有:

  • obfuscar https://github.com/obfuscar/obfuscar
  • 老版 ConfuserEx https://github.com/yck1509/ConfuserEx
  • (推荐)新版 ConfuserEx2 https://github.com/mkaring/ConfuserEx

obfuscar 验证 (弃用)

obfuscar 使用很简单, 但 github 上没有预编译的版本, 需要通过源码编译 Obfuscar.Console.exe 程序.

参考官方文档定制我们的混淆设置, 比如下面就是一个简单的示例.

Obfuscar.xml 文件

<?xml version="1.0" encoding="utf-8" ?>
<Obfuscator>
	<!--输入路径-->
	<Var name="InPath" value="." />
	<!--输出路径:加密混淆过的路径-->
	<Var name="OutPath" value=".\Obfuscator_Output" />
	<!--混淆代码的参数-->
	<Var name="ReuseNames" value="false" />
	<Var name="HideStrings" value="false" />
	<Var name="KeepPublicApi" value="false" />
	<Var name="HidePrivateApi" value="true" />
	<!--要混淆的模块-->
	<Module file="$(InPath)\test.exe">
		<!--SkipType跳过指定的类 Program是Main所在的类名-->
		<SkipType name="Program" />
		<!--SkipMethod 跳过指定的方法-->
		<SkipMethod type="Program" name="Main" />
	</Module> 
</Obfuscator>

混淆使用命令:

net48\Obfuscar.Console.exe  Obfuscar.xml

测试效果, 我的项目大量使用 dapper ORM, 经过 obfuscar 混淆后, 总是 crash.

ConfuserEx2 验证(推荐)

首先说明的是, 我的程序是Winform 程序, 用的是 .net framework 4.8, 经过验证 ConfuserEx 和 ConfuserEx2 效果都很好, 这里仅介绍 ConfuserEx2 的使用.

保护手段:

  1. ConfuserEx2 支持压缩 pack, 可以提高反编译的难度, 但经常被杀毒软件误报, 所以不建议使用.
  2. ConfuserEx1 也支持压缩 pack, 在我的电脑不会被杀毒软件报警, 但不确定其他杀毒软件是否会报警, 所以不建议使用.
  3. 不得不说混淆很有可能会引起程序异常, 尤其是对于匿名类的支持, 所以我仅仅选择了必要的保护措施, 经过实验和参考该项目的wiki , 分别是 ctrl flow, anti debug, anti ildasm, harden, 另外去除了 ConfuserEx 的 watermark , 这里最关键的是 ctrl flow.
  4. anti debug 保护是通过启动监控debug的线程实现的, 所以文档中建议不要对所有的assembly 进行 anti debug 保护, 仅仅对 main assembly保护, 已避免性能损失.

项目文件

ConfuserEx2 提供GUI和CLI两种工具, 可以将混淆任务保存为项目文件, 下面就是我使用的项目文件.

<project outputDir="D:\my_workspace\test\src\bin\Debug\Confused" baseDir="D:\my_workspace\test\src\bin\Debug" xmlns="http://confuser.codeplex.com">
  <rule pattern="true" inherit="false">
    <protection id="ctrl flow" />
    <protection id="anti debug" />
    <protection id="anti ildasm" />
    <protection id="harden" />
    <protection id="watermark" action="remove" />
  </rule>
  <module path="test.exe" />
</project>

GUI设置截图如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码危机!如何利用自定义异常应对复杂业务逻辑

大家好&#xff0c;我是小米&#xff0c;在这篇文章中&#xff0c;我将和大家分享关于自定义异常的使用场景以及一个实际的电商项目案例。自定义异常在软件开发中起到了重要的作用&#xff0c;能够帮助我们更好地管理和处理各种异常情况。让我们一起来看看各个场景下如何使用自…

85.建立主体页面-第一部分

记住我们之前画的草图&#xff0c;根据我们的草图来构建初始的页面 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta n…

202313读书笔记|《山居七年》——我只想在广袤璀璨的星河里享受生的鲜活,独自飞,游走

202313读书笔记|《山居七年》——我只想在广袤璀璨的星河里享受生的鲜活&#xff0c;独自飞&#xff0c;游走 《山居七年》 作者张二冬&#xff0c;选择隐士山居是一种很自由随性的生活态度&#xff0c;我觉得这不是普通人可以拥有的&#xff0c;比如我&#xff0c;并未入世也…

Nginx学习1--介绍和安装

文章目录 官方网站常用功能核心组成下载安装源码安装linux包安装ubuntu安装docker安装 官方网站 http://nginx.org/ 官方文档 常用功能 静态资源部署处理静态文件、处理索引文件以及支持自动索引&#xff1b; Rewrite地址重写正则表达式 反向代理提供反向代理服务器&#xf…

大数据:配置云服务器,主机名映射和SSH免密登录,创建Hadoop用户,复制免密登录

大数据&#xff1a;配置云服务器&#xff0c;主机名映射和SSH免密登录&#xff0c;创建Hadoop用户&#xff0c;复制免密登录 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 …

十、Camera 启动流程分析

和你一起终身学习&#xff0c;这里是程序员Android 经典好文推荐&#xff0c;通过阅读本文&#xff0c;您将收获以下知识点: 一、Camera 启动流程概览二、Launcher 跟Camera APP 交互三、Camera app 与FWK Camera Service 交互四、Camera FWK 与 Camera HAL 交互五、Camera FWK…

35岁,阿里6年,被打了低潜,已生无可恋,纠结该不该出去,40岁的人能不能给点建议?...

35岁是个转折点&#xff0c;许多人都在35岁时陷入迷茫&#xff0c;比如下面这位网友&#xff1a; 35岁&#xff0c;在阿里已经6年了&#xff0c;现在要混是可以混下去&#xff0c;但发展肯定是没有了&#xff0c;已经被老板打了低潜。目前被这个业务摩擦得已经生无可恋&#xf…

APP开发中的UI设计

UI设计是 APP开发中一个必不可少的部分&#xff0c;用户体验也是影响 APP产品成功与否的重要因素&#xff0c;用户体验包括用户的使用感受和操作感受。就 UI设计来说&#xff0c;它的主要内容有&#xff1a;界面、图标、颜色、字体、布局、页面布局等。 一个好的 UI设计可以增加…

通过extundelete实现CentOS6 ext4文件系统误删除文件的恢复

1.介质下载 路径&#xff1a; 链接&#xff1a;extundelete 提取码&#xff1a;ztj0 版本&#xff1a;extundelete.0.2.4 2.实验环境 1.CentOS6.8 系统版本命令&#xff1a; cat /etc/redhat-release 2.磁盘&#xff1a;/dev/sdb 磁盘查看命令&#xff1a; lsblk |g…

mysql数据备份-主从同步恢复

【1】数据库备份和恢复 1、xtrabackup-物理备份 全量备份主库数据&#xff1a;xtrabackup --backup --userroot --passwordxxx --port3306 --target-dir/comProject/backup/db/full_20220831 将full_20220831文件上传到从库服务器上 关闭存库服务&#xff1a;service mysqld …

将一维数组作为一列合并到二维数组中的numpy.column_stack()方法

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将一维数组作为一列合并到二维数组中 numpy.column_stack() 选择题 关于以下代码说法错误的一项是? import numpy as np a np.array([0,0]) b np.array([[1,2],[3,4]]) print("【显示…

C++ 线性数据结构系列之低调而强大的单调栈

1. 前言 单调栈是在栈基础上进行变化后的数据结构。除了遵循栈的先进后出的存储理念&#xff0c;在存储过程中还需保持栈中数据的有序性。 根据栈中数据排序的不同&#xff0c;单调栈分为&#xff1a; 单调递增栈&#xff1a;从栈顶部向栈的底部&#xff0c;数据呈递增排序。…

【JY】ABAQUS正交各向异性弹性本构模型

写在前文 材料的线弹性本构模型能够很好的描述处于工作荷载水平下的材料性能情况&#xff0c;后续材料的塑性理论也需要在弹性本构模型的基础上进行开展。由于砌体结构所采用的砌体材料具有明显的正交各项异性&#xff0c;故先从正交各向异性弹性入手&#xff0c;根据弹性理论中…

Java基础篇 | Java开发环境的搭建

✅作者简介&#xff1a;大家好&#xff0c;我是Cisyam&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Cisyam-Shark的博客 &#x1f49e;当前专栏&#xff1a; Java从入门到精通 ✨特色…

中创“六一”公益关爱活动 | 慈善守护童心,爱心筑梦未来

每一个孩子都是一朵花 有的盛开在春天&#xff0c;有的绽放在夏天 每一朵花&#xff0c;都有与众不同的美好 年年盛夏&#xff0c;如约出发&#xff1a; 在第73个“六一国际儿童节”来临之际&#xff0c;中创算力开展“六一公益关爱活动”&#xff0c;希望通过这样一个爱心…

我用低代码结合ChatGPT开发,每天多出1小时摸鱼

&#x1f449;腾小云导读 GPT 出现之后&#xff0c;很多人推测大量的软件都会因为其出现而重写。本文主要是低代码平台与 ChatGPT 结合的一些思考以及实践。期望与各位读者一起搭上 AI 这列快车&#xff0c;为开发提提速&#xff5e; &#x1f449;目录 1 背景 2 Demo 演示 3 思…

2022年软件测试人员调查统计——数据统计

1、软件测试从业人员的年龄分布 测试行业的主力军年龄分布主要是集中在 26-30 岁这个区间&#xff0c;这部分的群体承担着行 业发展的主导力量&#xff0c;占 43.2%。根据数据显示&#xff0c;被调查者中占比最多的是 26-30 岁区间的软件测试从业人员&#xff0c;26-30 岁的测试…

14 种免费 GIS 软件:在开源中绘制世界地图

如果你想绘制一幅世界地图&#xff0c;会选择什么GIS软件呢&#xff0c;ArcGIS、GlobalMapper这些都是国外比较出名的商业GIS软件&#xff0c;当然在国内很容易找到可用的版本&#xff0c;但是也可以使用免费的GIS软件完成所有操作。 这些免费的GIS软件为您提供了完成工作的效…

使用 VSCode SSH 公网远程连接本地服务器开发 - cpolar内网穿透

文章目录 前言视频教程1、安装OpenSSH2、vscode配置ssh3. 局域网测试连接远程服务器4. 公网远程连接4.1 ubuntu安装cpolar内网穿透4.2 创建隧道映射4.3 测试公网远程连接 5. 配置固定TCP端口地址5.1 保留一个固定TCP端口地址5.2 配置固定TCP端口地址5.3 测试固定公网地址远程 转…

Socket(六)

文章目录 1. 构造服务器Socket2. 构造但不绑定端口3. 获得服务器Socket的有关信息4. Socket选项5. SO_TIMEOUT6. SO_REUSEADDR7. SO_RCVBUF8. 服务类型 1. 构造服务器Socket 有四个公共的ServerSocket构造函数 public ServerSocket(int port) throws BindException, IOExcept…