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

这篇具有很好参考价值的文章主要介绍了探究——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

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

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

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

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

探究——C# .net 代码混淆/加壳探究——C# .net 代码混淆/加壳
<?xml version='1.0'?>
<Obfuscator>
  <Var name="InPath" value="." />
  <Var name="OutPath" value=".\Obfuscar" />
  <Var name="KeepPublicApi" value="true" />
  <Var name="HidePrivateApi" value="true" />
  <Var name="HideStrings" value="true" />
  <Var name="UseUnicodeNames" value="true" />
  <Var name="ReuseNames" value="true" />
  <Var name="RenameFields" value="true" />
  <Var name="RegenerateDebugInfo" value="true" />

  <Module file="$(InPath)\Logic.dll" />

</Obfuscator>
View Code

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

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

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

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

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

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

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

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

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

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

  方式二:dotnet tool(.net 6)

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

探究——C# .net 代码混淆/加壳探究——C# .net 代码混淆/加壳
<?xml version='1.0'?>
<Obfuscator>
  <Var name="InPath" value="." />
  <Var name="OutPath" value=".\Obfuscar" />
  <Var name="KeepPublicApi" value="true" />
  <Var name="HidePrivateApi" value="true" />
  <Var name="HideStrings" value="false" />
  <Var name="UseUnicodeNames" value="true" />
  <Var name="ReuseNames" value="true" />
  <Var name="RenameFields" value="true" />
  <Var name="RegenerateDebugInfo" value="true" />
  <Module file="$(InPath)\PlanManager.dll" />
  <Module file="$(InPath)\MapManager.dll" />

  <AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\6.0.9\" />
  <AssemblySearchPath path="C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.9\" />
</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的代码:

探究——C# .net 代码混淆/加壳探究——C# .net 代码混淆/加壳
  <ItemGroup>
    <PackageReference Include="Obfuscar" Version="2.2.33">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>
View Code

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

探究——C# .net 代码混淆/加壳探究——C# .net 代码混淆/加壳
  <ItemGroup>
    <None Update="Obfuscar.xml">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>
View Code

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

探究——C# .net 代码混淆/加壳探究——C# .net 代码混淆/加壳
  <Target Name="ObfuscarTask" AfterTargets="AfterBuild">
    <PropertyGroup>
      <ObfuscateCommand>$(Obfuscar) "Obfuscar.xml"</ObfuscateCommand>
    </PropertyGroup>
    <Exec WorkingDirectory="$(OutputPath)" Command="$(ObfuscateCommand)" />
  </Target>
View Code

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

总结:

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

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

3、如果混淆后,部分涉及到正则表达式的内容无法运行,那么考虑将internal的属性改为public文章来源地址https://www.toymoban.com/news/detail-711519.html

到了这里,关于探究——C# .net 代码混淆/加壳的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jar-project 代码加壳加密工具【开源】

    开源地址:https://gitee.com/chejiangyi/jar-protect java 本身是开放性极强的语言,代码也容易被反编译,没有语言层面的一些常规保护机制,jar包很容易被反编译和破解。 受classfinal(已停止维护)设计启发,针对springboot日常项目开发,重新编写安全可靠的jar包加壳加密技术,用于保护软件版

    2024年02月11日
    浏览(34)
  • 微信小程序背景渐变写法加占比以及微信小程序开发过程中长使用的代码段

    在写微信小程序的过程中,ui设计了一个渐变的背景图,网上一搜很多都只写了怎么样让微信渐变色,但是我的需求就是渐变色而且控制渐变色范围,比如三个颜色一个头部是深蓝,中间浅蓝,最底下是白色,那么直接套用网上的列子(第一段代码),三个色渐变范围是一样

    2024年01月17日
    浏览(48)
  • .Net项目混淆/加密工具

    1、概述         由于 .NET 的性质,不受保护的 .NET 程序集可以被高级程序员和破解者轻松反编译,从而更容易检测和删除应用程序中的保护例程。因此有必要保护代码。         下面简单记录了几个比较常见的代码混淆工具以备忘。 2、Dotfuscator(免费)         Dotfus

    2024年02月06日
    浏览(46)
  • Eazfuscator.NET 2021.4 学习版 支持.Net6混淆

    Eazfuscator.NET是.NET 平台的工业级混淆器 。Eazfuscator.NET就像 1-2-3 一样简单。它可以保护您的代码,而不会破坏它 —— 即使在最复杂的情况下 —— 我们已经处理好了。您可以将Eazfuscator.NET视为一个很好的合作伙伴,他可以为您提供很多帮助,并且仍然不会因为他的任何问

    2024年02月12日
    浏览(33)
  • .NET Core(C#) IEqualityComparer<in T>接口的使用方法及示例代码

    .NET Core(C#)中IEqualityComparerT接口的对象的主要作用是实现接口来判断两个对象是否相等,以下介绍一下 IEqualityComparerin T接口的简单介绍和实现使用的方法,以及相关示例代码。   1、IEqualityComparerin T的的GetHashCode和Equals方法 IEqualityComparerin T 是用来比较对象是否相等,需要实现

    2024年02月09日
    浏览(68)
  • ASP.NET交通信息网上查询系统的设计与实现(源代码+论文+开题报告)

    当前我国交通网上信息系统的发展处于一个较落后的水平,广大乘客可以获得信息的方式很少,通常依赖于火车飞机时刻表,而汽车只能到车站查询。为了解决这种问题,加快发展交通信息化,设计一个交通信息网上查询系统是具有一定实际应用意义的。在此背景下,本文基于

    2024年02月09日
    浏览(47)
  • 【C#/.NET】探究Task中ConfigureAwait方法

    ​  目录   引言 ConfigureAwait方法的作用和原理 ConfigureAwait方法的使用场景 非UI线程场景 避免上下文切换 避免死锁 ConfigureAwait方法的注意事项 在UI线程使用时需要小心 嵌套搭配使用 总结           在.NET开发中,我们经常使用异步编程来提高应用程序的性能和响应能力。

    2024年02月11日
    浏览(47)
  • SpringBoot启动过程探究及配置文件优先级解析

    如果项目依赖中存在org.springframework.web.reactive.DispatcherHandler,并且不存在org.springframework.web.servlet.DispatcherServlet,那么应用类型为WebApplicationType.REACTIVE 如果项目依赖中不存在org.springframework.web.reactive.DispatcherHandler,也不存在org.springframework.web.servlet.DispatcherServlet,那么应用类型为

    2024年02月09日
    浏览(43)
  • 代码混淆与反混淆学习-第二弹

    deflat脚本链接:GitHub - cq674350529/deflat: use angr to deobfuscation 这里以代码混淆与反混淆学习-第一弹中的OLLVM 混淆样本为例进行去除。【LLVM-4.0】 控制流平坦前 控制流平坦后 python deflat.py --file main-bcf --addr 0x401180 deflat.py 成功去除后效果: 去混淆后,效果还算可以,能分析程序流程

    2023年04月09日
    浏览(66)
  • Vue开发过程中那些易混淆的知识点 vue-cli & webpack

    Vue CLI = Vue + 一堆的js插件 Vue CLI是基于 Node.js 开发出来的工具,它是一个官方发布 vue.js 项目脚手架,可以快速搭建 Vue 开发环境以及对应的 webpack 配置,单独编译,单独部署。可以再集成各种第三方插件,扩展出更多的功能 Vue是渐近式框架,你可以用它一个功能,也可以用全

    2023年04月23日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包