关于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(); }
工具运行演示
许可证协议
本项目的开发与发布遵循MIT开源许可协议。
项目地址
Obfuscar:【GitHub传送门】
参考资料
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)