zoukankan      html  css  js  c++  java
  • ASP.NET Core搭建多层网站架构【15-扩展之使用Obfuscar混淆加密保护代码】

    2020/02/03, ASP.NET Core 3.1, VS2019, Obfuscar 2.2.25

    摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构【15-扩展之使用Obfuscar混淆加密保护代码】
    使用Obfuscar混淆加密保护代码,防止他人使用ILSpy等工具反编译查看到源码

    文章目录

    此分支项目代码

    本章节介绍了使用Obfuscar混淆加密保护代码,防止他人使用ILSpy等工具反编译查看到源码,可以一定程度上防护自己的代码

    Obfuscar是开源免费的混淆加密工具,支持.NET Framework和.NET Core应用程序,官方网站github项目地址官方文档

    添加包引用

    MS.WebApi应用程序添加包引用:

    <ItemGroup>
      <PackageReference Include="Obfuscar" Version="2.2.25">
    </ItemGroup>
    

    添加混淆配置文件

    MS.WebApi应用程序添加xml配置文件,取名为obfuscar.xml:

    右击该xml文件属性,选择始终复制到输出目录:

    编辑obfuscar.xml配置文件:

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

    添加生成事件

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

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

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

    至此,所有的配置都已完成,下面编译项目,验证是否混淆

    验证是否混淆

    右击MS.WebApi应用程序,选择发布,根据上一章节的配置重新发布编译一次网站项目:

    可以看到publish中即最终发布的项目文件,Obfuscator_Output就是根据配置文件混淆过后的dll

    打开Obfuscator_Output:

    可以看到里面有三个dll,即我们在obfuscar.xml中写的三个需要混淆的dll

    下载并打开ILSpy,打开
    Release etcoreapp3.1publishMS.Services.dll(混淆前)和Release etcoreapp3.1Obfuscator_OutputMS.Services.dll(混淆后)进行对比

    • 可以看到代码已成功混淆(绿色框出来的地方)
    • 可以看到代码部分成员变量已经变成了unicode编码

    将Obfuscator_Output中的三个dll复制并粘贴覆盖到publish中,然后将publish中的网站项目文件全部拷贝至IIS部署目录website中(具体请参考上一章节),重启IIS,调用接口,网站可以使用混淆后的代码正常运行(这边就不再截图了)

  • 相关阅读:
    结构和联合
    字符串、字符和字节
    数组
    函数
    指针
    操作符和表达式
    语句
    数据
    TinyXML2 使用
    是否忘记了向源中添加“#include "StdAfx.h"”?
  • 原文地址:https://www.cnblogs.com/kasnti/p/12284757.html
Copyright © 2011-2022 走看看