探究——C# .net 代码混淆/加壳

背景:

  保密。

过程:

  先查询一下常见的加壳工具:

  • DotFuscator,官方自带,据说免费版混淆程度不高
  • ConfuserEx,只支持.NET Framework 2.0/3.0/3.5/4.0/4.5/4.6/4.7/4.8,不支持.NET Core
  • Virbox Protector,很好很优秀,但是收费
  • NET Reactor,最新6.9版收费,PJ版到4.9不支持.NET Core
  • Obfuscar,开源,可以用dotnet tool或项目构建的方式进行使用

  那就先用Obfuscar试试水(官方文档:https://docs.obfuscar.com/getting-started/configuration)。

方式一:nuget安装(推荐,这种方式可以针对性下载各.net版本对应工具包)

  1、在项目中使用nuget安装obfuscar

   2、在项目根目录下找到packages\Obfuscar.2.2.38\tools,将Obfuscar.Console.exe拷到要加密文件的文件夹中

   3、新建一个Obfuscar.xml 文件放到相同目录下,内容如下:

 View Code

  下图中,Logic.dll是要加密的类库:

   4、用命令提示符cmd进入到目录下(可以在cmd里用cd指令跳转,也可以直接打开目标文件夹,然后在上方的文件路径那里直接替换成cmd后enter)

   5、执行>Obfuscar.Console.exe Obfuscar.xml

   6、在生成的Obfuscar文件夹中可以找到被加壳后的同名Logic.dll

  上述得到的Logic.dll即可被其他项目直接引用,加密后类似:

  方式二:dotnet tool(.net 6)

  1、新建一个Obfuscar.xml 文件放到类库所在目录,内容如下:

 View Code

  其中,Module对应填入想要加壳的类库,可以添加多行,AssemblySearchPath根据自己.net的路径进行配置。

  2、在cmd中进入到上述目录中,执行命令:dotnet tool install --global Obfuscar.GlobalTool

  3、在cmd中执行命令:obfuscar.console Obfuscar.xml

  4、在上述目录中找到自动生成的Obfuscar文件夹,加壳后的类库就存放在里面,拷贝出来即可使用。

PS:.net6的带WebAPI的exe好像加壳失败,待测试。

方式三:项目构建

  1、在csproj 项目文件中添加安装Obfuscar的代码:

 View Code

  2、在项目中添加一个Obfuscar.xml 文件,内容跟方式一的类似,再在csproj 项目文件中设置更新

 View Code

  3、在csproj 项目文件中设置自动构建

 View Code

 PS:这种方式还没测试过,待测试

总结:

1、使用手册:https://docs.obfuscar.com/getting-started/configuration

2、可以用skip自定义跳过混淆的内容

3、如果混淆后,部分涉及到正则表达式的内容无法运行,那么考虑将internal的属性改为public

本文来自博客园,作者:MaQaQ,转载请注明原文链接:https://www.cnblogs.com/magicMaQaQ/p/17702951.html

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

posted @ 2024-05-14 16:39  普天2022  阅读(419)  评论(0编辑  收藏  举报