2020/02/03, ASP.NET Core 3.1, VS2019, Obfuscar 2.2.25html
摘要:基於ASP.NET Core 3.1 WebApi搭建後端多層網站架構【15-擴展之使用Obfuscar混淆加密保護代碼】
使用Obfuscar混淆加密保護代碼,防止他人使用ILSpy等工具反編譯查看到源碼git
文章目錄github
此分支項目代碼web
本章節介紹了使用Obfuscar混淆加密保護代碼,防止他人使用ILSpy等工具反編譯查看到源碼,能夠必定程度上防禦本身的代碼後端
Obfuscar是開源免費的混淆加密工具,支持.NET Framework和.NET Core應用程序,官方網站、github項目地址、官方文檔架構
向MS.WebApi
應用程序添加包引用:app
<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>
CD $(TargetDir)
命令跳到當前輸出目標目錄Module file="$(InPath)\MS.Services.dll"
這行意思就是,將編譯完成後輸出目錄下的MS.Services.dll進行混淆(混淆後會生成在Obfuscator_Output文件夾中)在MS.WebApi
應用程序中右擊-屬性-生成事件,在「生成後事件命令行」中填寫命令:
CD $(TargetDir) "$(Obfuscar)" obfuscar.xml
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(混淆後)進行對比
將Obfuscator_Output中的三個dll複製並粘貼覆蓋到publish中,而後將publish中的網站項目文件所有拷貝至IIS部署目錄website中(具體請參考上一章節),重啓IIS,調用接口,網站可使用混淆後的代碼正常運行(這邊就再也不截圖了)