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\netcoreapp3.1\publish\MS.Services.dll(混淆前)和Release\netcoreapp3.1\Obfuscator_Output\MS.Services.dll(混淆后)進行對比

  • 可以看到代碼已成功混淆(綠色框出來的地方)
  • 可以看到代碼部分成員變量已經變成了unicode編碼

將Obfuscator_Output中的三個dll復制並粘貼覆蓋到publish中,然后將publish中的網站項目文件全部拷貝至IIS部署目錄website中(具體請參考上一章節),重啟IIS,調用接口,網站可以使用混淆后的代碼正常運行(這邊就不再截圖了)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM