经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
探究——C# .net 代码混淆/加壳
来源:cnblogs  作者:MaQaQ  时间:2023/10/18 8:53:59  对本文有异议

背景:

  保密。

过程:

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

  • 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. <?xml version='1.0'?>
  2. <Obfuscator>
  3. <Var name="InPath" value="." />
  4. <Var name="OutPath" value=".\Obfuscar" />
  5. <Var name="KeepPublicApi" value="true" />
  6. <Var name="HidePrivateApi" value="true" />
  7. <Var name="HideStrings" value="true" />
  8. <Var name="UseUnicodeNames" value="true" />
  9. <Var name="ReuseNames" value="true" />
  10. <Var name="RenameFields" value="true" />
  11. <Var name="RegenerateDebugInfo" value="true" />
  12.  
  13. <Module file="$(InPath)\Logic.dll" />
  14.  
  15. </Obfuscator>
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. <?xml version='1.0'?>
  2. <Obfuscator>
  3. <Var name="InPath" value="." />
  4. <Var name="OutPath" value=".\Obfuscar" />
  5. <Var name="KeepPublicApi" value="true" />
  6. <Var name="HidePrivateApi" value="true" />
  7. <Var name="HideStrings" value="false" />
  8. <Var name="UseUnicodeNames" value="true" />
  9. <Var name="ReuseNames" value="true" />
  10. <Var name="RenameFields" value="true" />
  11. <Var name="RegenerateDebugInfo" value="true" />
  12. <Module file="$(InPath)\PlanManager.dll" />
  13. <Module file="$(InPath)\MapManager.dll" />
  14.  
  15. <AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\6.0.9\" />
  16. <AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.9\" />
  17. </Obfuscator>
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的代码:

  1. <ItemGroup>
  2. <PackageReference Include="Obfuscar" Version="2.2.33">
  3. <PrivateAssets>all</PrivateAssets>
  4. <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  5. </PackageReference>
  6. </ItemGroup>
View Code

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

  1. <ItemGroup>
  2. <None Update="Obfuscar.xml">
  3. <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  4. </None>
  5. </ItemGroup>
View Code

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

  1. <Target Name="ObfuscarTask" AfterTargets="AfterBuild">
  2. <PropertyGroup>
  3. <ObfuscateCommand>$(Obfuscar) "Obfuscar.xml"</ObfuscateCommand>
  4. </PropertyGroup>
  5. <Exec WorkingDirectory="$(OutputPath)" Command="$(ObfuscateCommand)" />
  6. </Target>
View Code

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

结语:

  懒得写。

原文链接:https://www.cnblogs.com/magicMaQaQ/p/17702951.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号