首页 > 编程语言 >Obfuscar:一款针对.NET程序的开源代码混淆工具

Obfuscar:一款针对.NET程序的开源代码混淆工具

时间:2024-12-18 20:42:03浏览次数:4  
标签:Obfuscar Text obfuscar 名称 NET 源代码 工具

关于Obfuscar

Obfuscar是一款针对.NET程序的开源代码混淆工具,该工具支持使用大量重载将 .NET 程序集中的元数据(包括方法、属性、事件、字段、类型和命名空间的名称)重命名为最小集合,在大多数情况下仅通过签名即可区分。

例如,如果某个类仅包含接受不同参数的方法,则可以将它们全部重命名为“A”。如果向该类添加另一个接受与现有方法相同参数的方法,则可以将其命名为“a”。简而言之,该工具可以让反编译后的代码更加难以理解。

基本上,Obfuscar 会打乱一组程序集中的元数据。它会根据签名和类型信息将所有内容重命名为可用于识别它们的最小名称集。由于这些新名称比旧名称短,因此它还会大幅缩小可执行文件的大小。

功能介绍

1、简单配置:隐藏所有私密内容,同时保持所有公开内容。您可以通过默认设置轻松实现这一点。

2、名称混淆:隐藏您不想公开的类/方法/属性/事件名称。这是不可逆的。

3、字符串压缩:字符串内容可以被压缩,这样终端用户就不容易知道它们。但是,这可以通过某些工具进行逆转。

工具要求

Visual Studio

工具安装

广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/obfuscar/obfuscar.git

然后在Visual Studio中打开Obfuscar.sln并编译即可。

工具使用

工具配置

<Module file="$(InPath)\AssemblyX.exe">

  <!-- skip a namespace -->

  <SkipNamespace name="Company.PublicBits" />

 

  <!-- to skip a namespace recursively, just put * on the end -->

  <SkipNamespace name="Company.PublicBits*" />

 

  <!-- skip field by name -->

  <SkipField type="Full.Namespace.And.TypeName"

    attrib="public" name="Fieldname" />

 

  <!-- skip field by regex -->

  <SkipField type="Full.Namespace.And.TypeName"

    attrib="public" rx="Pub.*" />

 

  <!-- skip type...will still obfuscate its methods -->

  <SkipType name="Full.Namespace.And.TypeName2" />

 

  <!-- skip type...will skip its methods next -->

  <SkipType name="Full.Namespace.And.TypeName3" />

  <!-- skip TypeName3's public methods -->

  <SkipMethod type="Full.Namespace.And.TypeName3"

    attrib="public" rx=".*" />

  <!-- skip TypeName3's protected methods -->

  <SkipMethod type="Full.Namespace.And.TypeName3"

    attrib="family" rx=".*" />

 

  <!-- skip type and its methods -->

  <SkipType name="Full.Namespace.And.TypeName4" skipMethods="true" />

  <!-- skip type and its fields -->

  <SkipType name="Full.Namespace.And.TypeName4" skipFields="true" />

  <!-- skip type and its properties -->

  <SkipType name="Full.Namespace.And.TypeName4" skipProperties="true" />

  <!-- skip type and its events -->

  <SkipType name="Full.Namespace.And.TypeName4" skipEvents="true" />

  <!-- skip attributes can be combined (this will skip the methods and fields) -->

  <SkipType name="Full.Namespace.And.TypeName4" skipMethods="true" skipFields="true" />

  <!-- skip the hiding of strings in this type's methods -->

  <SkipType name="Full.Namespace.And.TypeName4" skipStringHiding="true" />

 

  <!-- skip a property in TypeName5 by name -->

  <SkipProperty type="Full.Namespace.And.TypeName5"

    name="Property2" />

  <!-- skip a property in TypeName5 by regex -->

  <SkipProperty type="Full.Namespace.And.TypeName5"

    attrib="public" rx="Something\d" />

 

  <!-- skip an event in TypeName5 by name -->

  <SkipProperty type="Full.Namespace.And.TypeName5"

    name="Event2" />

  <!-- skip an event in TypeName5 by regex -->

  <SkipProperty type="Full.Namespace.And.TypeName5"

    rx="Any.*" />

 

  <!-- avoid the hiding of strings in TypeName6 on all methods -->

  <SkipStringHiding type="Full.Namespace.And.TypeName6" name="*" />

</Module>

基础使用

基本上,Obfuscar 会打乱一组程序集中的元数据。它会根据签名和类型信息将所有内容重命名为可用于识别它们的最小名称集。由于这些新名称比旧名称短,因此它还会显著缩小可执行文件的大小。

该代码可以通过ILSpy反编译为:

public ExampleUI()

{

        this.InitializeComponent();

        this.displayText.Text = new ClassX("Some Text").get_DisplayText();

}

混淆后,代码可以通过ILSpy反编译为:

public A()

{

        this.A();

        this.a.Text = new A.A("Some Text").A();

}

工具运行演示

项目地址

https://github.com/obfuscar/obfuscar

原创 Alpha_h4ck FreeBuf

标签:Obfuscar,Text,obfuscar,名称,NET,源代码,工具
From: https://www.cnblogs.com/o-O-oO/p/18615820

相关文章

  • COMPSCI 4043 Systems and Networks
    Systemsand NetworksCOMPSCI4043December20221.   (a)    Expressthefollowing in 16-bittwo’s complement representation, giving your answers in hexadecimal. Showyourworking.i.       1000     ii.       -2000......
  • WPF 用Vlc.DotNet.Wpf实现视频播放、停止、暂停功能
    1. NuGet添加 Vlc.DotNet.Wpf 2.  到VLC官网http://www.videolan.org/下载VLC播放器。因为本机是64位的,所以下载64位,如下所示:下载的是 安装后,到安装的路径下,拷贝如下文件夹:在wpf项目的exe文件夹下,本机是 bin\Debug\net8.0-windows,新建libvlc后,再建win-x64文......
  • netty echo例子
    netty使用方法:1.选择事件处理线程池EventLoopGroup,要与下面的管道选择对应名称,服务端要两个(一个是接收客户端连接,另一个是处理客户端请求),客户端只需要一个(处理客户端请求)2.创建Bootstrap对象,配置事件处理线程池(上面new的Group)3.设置管道(有NioSocketChannel,Ep......
  • dotnet9 MAUI + Vue 项目
    MAUI是dotnet的跨平台技术,支持windows平台、android平台、ios平台等。使用MAUI作为基础平台,在其上运行一个前端项目,比如Vue,可以同时享受开发效率与跨平台的好处。使用dotnet9后MAUI提供的组件HybridWebView,可以实现将前端项目嵌入到MAUI项目Page中的效果。支持C#与javascript的互......
  • Netty出现的异常【已解决】:An exceptionCaught() event was fired, and it reached at
    修改方案:byteBuf.retain();ByteBuf后面添加这个retain(),这个添加原则是这样,如果你消耗了一次ByteBuf,你的下游Handler还需要再次消耗的话,就需要添加这个retain(),以此类推,一定要要注意添加的时机,不然的话可能需要自己手动释放;原因分析:这个错误是因为ByteBuf的已经被逻辑释放......
  • Netty网络框架详细讲解
    一、Netty基本内容1.什么是netty?Netty是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。异步的:事件驱动:基于JavaNIO(Non-blockingI/O)的Selector实现的。Netty的核心设计目标是:高性能:充分利用JavaNIO的非阻塞特性。可扩......
  • 小麦病虫害识别与防治系统,resnet50,mobilenet模型【pytorch框架+python源码】
     更多目标检测、图像分类识别、目标追踪等项目可看我主页其他文章功能演示:小麦病虫害识别与防治系统,卷积神经网络,resnet50,mobilenet【pytorch框架,python源码】_哔哩哔哩_bilibili(一)简介小麦病虫害识别与防治系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,......
  • npm ERR! network 'proxy' config is set properly. See: 'npm help config'
    执行npminstall@gcpaas/data-room-ui命令时报错在package.json这个文件里面添加 overrides这段代码"overrides":{"node-sass":"npm:sass@*","@gcpaas/data-room-ui":{"node-sass":"npm:sass@*"......
  • ASP.NET大文件(视频)上传思路
    功能:大文件上传下载,断点续传,文件夹上传下载,加密传输,加密存储,云对象存储要求:免费,开源,技术支持前端:vue2,vue3,react,vue-cli,html,jquery后端:asp.net,vb.net,.netcore,.netmvc,.netwebform平台:Windows,macOS,Linux,Ubuntu,RedHat,CentOS,中标麒麟,银河麒麟,统信UOS,信......
  • 空间三点求圆心程序设计及实现【vb.Net】
    已知空间三点的三维坐标,求这三个点所确定的空间圆的圆心坐标和半径。这是测绘领域经常会碰到的问题,今天示例关于这个空间三点求圆心程序的实现过程。1、基础理论——空间三点确定圆心已知空间三点的坐标为(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),求这三个点所确定的空间圆的圆心坐标和......