代码混淆
大家都知道,C# 代码在编译后生成的中间语言(IL)非常容易被反编译,几乎可以直接还原为可读的源代码。这对于一些对安全性要求较高的场景来说,存在较大的风险。
为了有效保护核心逻辑和关键业务代码,代码混淆是一种常用且必要的手段。通过对代码结构、变量名称和逻辑流程进行混淆处理,即使代码被反编译,也会变得极其难以理解,从而在一定程度上防止恶意逆向工程和知识产权泄露,提升代码的安全性和可靠性。
Obfuscar
今天推荐一个开源免费的 .NET 混淆神器,容易上手使用,在 Github 上拥有 2.4k 的 star,可以它还是很受欢迎的。
它使用了大量的重载,把 .NET 程序集中的元数据(包括方法、属性、事件、字段、类型和命名空间的名称)重命名为最小集,在大多数情况下只能通过签名来区分。
功能特性
功能强大,开源免费,配置简单
名称混淆, 隐藏您不想公开的类/方法/属性/事件名称
支持字符串压缩
支持 dotnet 全局工具
支持多平台,Windows、macOS 和 Linux
支持多框架, .NET, Xamarin, Unity,.NET Framework
publicExampleUI( )
{
InitializeComponent( );
ClassX cx = newClassX( "Some Text");
displayText.Text = cx.DisplayText;
}
该代码可以反编译(通过ILSpy )为:
publicExampleUI( )
{
this.InitializeComponent;
this.displayText.Text = newClassX( "Some Text").get_DisplayText;
}
而混淆后,反编译后的代码是这样的:
publicA( )
{
this.A;
this.a.Text = newA.A( "Some Text").A;
}
这是一个最简单的例子,Obfuscar 的更多功能可以通过配置实现。
.NET Core 全局工具
.NET Core 2.1 SDK引入了全局工具,从2.2.15版本开始,Obfuscar就可以作为全局工具使用。
要将 Obfuscar 安装为全局工具,请执行:
dotnet tool install --global Obfuscar.GlobalTool
安装完成后,您可以调用obfuscar.console来运行 Obfuscar。
项目地址:
https://www.obfuscar.com
鼓励一下
赞完再走返回搜狐,查看更多
责任编辑: