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

admin 2024年12月17日22:54:18评论13 views字数 2957阅读9分51秒阅读模式

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

关于Obfuscar

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

Obfuscar:一款针对.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="Somethingd" />  <!-- 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();}
工具运行演示

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

许可证协议

本项目的开发与发布遵循MIT开源许可协议。

项目地址

Obfuscar:

https://github.com/obfuscar/obfuscar

原文始发于微信公众号(FreeBuf):Obfuscar:一款针对.NET程序的开源代码混淆工具

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月17日22:54:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Obfuscar:一款针对.NET程序的开源代码混淆工具http://cn-sec.com/archives/3520557.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息