前言
先查詢一下常見的加殼工具:
DotFuscator,官方自帶,據(jù)說免費版混淆程度不高
Virbox Protector,很好很優(yōu)秀,但是收費
Obfuscar,開源,可以用dotnet tool或項目構(gòu)建的方式進行使用
那就先用Obfuscar試試水。
正文
方式一:nuget安裝
推薦,這種方式可以針對性下載各.net版本對應(yīng)工具包
1、在項目中使用nuget安裝obfuscar

2、在項目根目錄下找到packages\Obfuscar.2.2.38\tools,將Obfuscar.Console.exe拷到要加密文件的文件夾中

3、新建一個Obfuscar.xml 文件放到相同目錄下,內(nèi)容如下:
<?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>
下圖中,Logic.dll是要加密的類庫:

?4、用命令提示符cmd進入到目錄下(可以在cmd里用cd指令跳轉(zhuǎn),也可以直接打開目標文件夾,然后在上方的文件路徑那里直接替換成cmd后enter)

5、執(zhí)行>Obfuscar.Console.exe Obfuscar.xml
6、在生成的Obfuscar文件夾中可以找到被加殼后的同名Logic.dll

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

方式二:dotnet tool(.net 6)
1、新建一個Obfuscar.xml 文件放到類庫所在目錄,內(nèi)容如下:
<?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>
其中,Module對應(yīng)填入想要加殼的類庫,可以添加多行,AssemblySearchPath根據(jù)自己.net的路徑進行配置。
2、在cmd中進入到上述目錄中,執(zhí)行命令:dotnet tool install --global Obfuscar.GlobalTool
3、在cmd中執(zhí)行命令:obfuscar.console Obfuscar.xml
4、在上述目錄中找到自動生成的Obfuscar文件夾,加殼后的類庫就存放在里面,拷貝出來即可使用。
PS:.net6的帶WebAPI的exe好像加殼失敗,待測試。
方式三:項目構(gòu)建
1、在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.xml 文件,內(nèi)容跟方式一的類似,再在csproj 項目文件中設(shè)置更新
<ItemGroup>
<None Update="Obfuscar.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
3、在csproj 項目文件中設(shè)置自動構(gòu)建
<Target Name="ObfuscarTask" AfterTargets="AfterBuild">
<PropertyGroup>
<ObfuscateCommand>$(Obfuscar) "Obfuscar.xml"</ObfuscateCommand>
</PropertyGroup>
<Exec WorkingDirectory="$(OutputPath)" Command="$(ObfuscateCommand)" />
</Target>
PS:這種方式還沒測試過,待測試
轉(zhuǎn)自:MaQaQ
鏈接:cnblogs.com/magicMaQaQ/p/17702951.html
- EOF -
閱讀原文:原文鏈接
該文章在 2025/8/25 13:04:12 編輯過