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


    背景:

      保密。

    过程:

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

    • DotFuscator,官方自带,据说免费版混淆程度不高
    • Virbox Protector,很好很优秀,但是收费
    • NET Reactor,可能会被识别为病毒
    • Obfuscar,开源,可以用dotnet tool或项目构建的方式进行使用

      那就先用Obfuscar试试水。

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

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

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

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

    '1.0'?>
    
      "InPath" value="." />
      "OutPath" value=".\Obfuscar" />
      "KeepPublicApi" value="true" />
      "HidePrivateApi" value="true" />
      "HideStrings" value="true" />
      "UseUnicodeNames" value="true" />
      "ReuseNames" value="true" />
      "RenameFields" value="true" />
      "RegenerateDebugInfo" value="true" />
    
      "$(InPath)\Logic.dll" />
    
    
    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 文件放到类库所在目录,内容如下:

    '1.0'?>
    
      "InPath" value="." />
      "OutPath" value=".\Obfuscar" />
      "KeepPublicApi" value="true" />
      "HidePrivateApi" value="true" />
      "HideStrings" value="false" />
      "UseUnicodeNames" value="true" />
      "ReuseNames" value="true" />
      "RenameFields" value="true" />
      "RegenerateDebugInfo" value="true" />
      "$(InPath)\PlanManager.dll" />
      "$(InPath)\MapManager.dll" />
    
      "C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\6.0.9\" />
      "C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.9\" />
    
    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的代码:

      
        "Obfuscar" Version="2.2.33">
          all
          runtime; build; native; contentfiles; analyzers; buildtransitive
        
      
    View Code

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

      
        "Obfuscar.xml">
          PreserveNewest
        
      
    View Code

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

      "ObfuscarTask" AfterTargets="AfterBuild">
        
          $(Obfuscar) "Obfuscar.xml"
        
        "$(OutputPath)" Command="$(ObfuscateCommand)" />
      
    View Code

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

    结语:

      懒得写。

  • 相关阅读:
    太空射击第15课: 道具
    测开不得不会的python之re模块正则表达式匹配
    简易计算器的实现:使用C语言进行基础算术运算
    Kubernetes云原生实战01 Kubernetes高可用部署架构
    《计算机操作系统-第二章》之操作系统的运行机制与体系结构
    python mongodb数据查询
    325.高端的电影资讯响应式网页 大学生期末大作业 Web前端网页制作 html+css+js
    贪心法求解问题
    计及需求响应的粒子群算法求解风能、光伏、柴油机、储能容量优化配置(Matlab代码实现)
    51单片机学习:DS1302时钟实验
  • 原文地址:https://www.cnblogs.com/magicMaQaQ/p/17702951.html