C# 代码自动混淆

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

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

  <ItemGroup>
    <PackageReference Include="Obfuscar" Version="2.2.33">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

2、复制Obfuscar.Console.exe到项目文件夹内

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

3、新建一个Obfuscar.xml 文件放到相同目录下

<?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>

可以将该文件包括在项目中,右击该xml文件属性,选择始终复制到输出目录:

下图中,Logic.dll是要加密的类库,也可以是exe文件:

  • 配置的变量值在官方文档-配置中都有写,可以去查阅下
  • 解释下以上我的配置含义:
    • InPath即输入路径,"."表示从当前路径开始找,项目编译完,我会使用CD $(TargetDir)命令跳到当前输出目标目录
    • OutPath即输出路径,输出到当前路径下的Obfuscator_Output文件夹
    • UseUnicodeNames即使用Unicode编码混淆名称,值是true,就是开启该功能
    • var开头的节点都是混淆配置,obfuscar还有好多配置,但是有些配置开启后会影响代码功能,需要自己混淆后再测试一遍功能,以上我的配置不影响代码功能,已经自行测试过了
    • Module file="$(InPath)\MS.Services.dll"这行意思就是,将编译完成后输出目录下的MS.Services.dll进行混淆(混淆后会生成在Obfuscator_Output文件夹中)

4、Cmd执行加密

添加生成事件#

MS.WebApi应用程序中右击-属性-生成事件,在“生成后事件命令行”中填写命令:

CD $(TargetDir)
"$(Obfuscar)" obfuscar.xml

  • 编译成功后,VS便执行上面写的两行命令
  • CD $(TargetDir)这条命令很重要,决定了obfuscar.xml配置文件中InPath的值"."的相对路径的位置,InPath的值如果不对,会找不到要混淆的dll
  • "$(Obfuscar)" obfuscar.xml便是核心,使用obfuscar.xml配置混淆代码

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

执行>Obfuscar.Console.exe Obfuscar.xml

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

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

posted @   多见多闻  阅读(438)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2023-11-21 如何查看PPT【powerpoint】加载宏的代码
点击右上角即可分享
微信分享提示