背景:
保密。
过程:
先查询一下常见的加壳工具:
- DotFuscator,官方自带,据说免费版混淆程度不高
- Virbox Protector,很好很优秀,但是收费
- NET Reactor,可能会被识别为病毒
- Obfuscar,开源,可以用dotnet tool或项目构建的方式进行使用
那就先用Obfuscar试试水。
方式一:nuget安装(推荐,这种方式可以针对性下载各.net版本对应工具包)
1、在项目中使用nuget安装obfuscar
2、在项目根目录下找到packagesObfuscar.2.2.38tools,将Obfuscar.Console.exe拷到要加密文件的文件夹中
3、新建一个Obfuscar.xml 文件放到相同目录下,内容如下:
<?xml version='1.0'?>
"InPath" value="." />
"OutPath" value=".Obfuscar" />
"KeepPublicApi" value="true" />
"HidePrivateApi" value="true" />
"HideStrings" value="true" />
"UseUnicodeNames" value="true" />
"ReuseNames" value="true" />
"RenameFields" value="true" />
"RegenerateDebugInfo" value="true" />
"$(InPath)Logic.dll" />
View Code
下图中,Logic.dll是要加密的类库:
4、用命令提示符cmd进入到目录下(可以在cmd里用cd指令跳转,也可以直接打开目标文件夹,然后在上方的文件路径那里直接替换成cmd后enter)
5、执行>Obfuscar.Console.exe Obfuscar.xml
6、在生成的Obfuscar文件夹中可以找到被加壳后的同名Logic.dll
上述得到的Logic.dll即可被其他项目直接引用,加密后类似:
方式二:dotnet tool(.net 6)
1、新建一个Obfuscar.xml 文件放到类库所在目录,内容如下:
<?xml version='1.0'?>
"InPath" value="." />
"OutPath" value=".Obfuscar" />
"KeepPublicApi" value="true" />
"HidePrivateApi" value="true" />
"HideStrings" value="false" />
"UseUnicodeNames" value="true" />
"ReuseNames" value="true" />
"RenameFields" value="true" />
"RegenerateDebugInfo" value="true" />
"$(InPath)PlanManager.dll" />
"$(InPath)MapManager.dll" />
"C:服务器托管网Program FilesdotnetsharedMicrosoft.WindowsDesktop.App6.0.9" />
"C:Program FilesdotnetsharedMicrosoft.NETCore.App6.0.9" />
View Code
其中,Module对应填入想要加壳的类库,可以添加多行,AssemblySearchPath根据自己.net的路径进行配置。
2、在cmd中进入到上述目录中,执行命令:dotnet tool install --global Obfuscar.GlobalTool
3、在cmd中执行命令:obfuscar.console Obfuscar.xml
4、在上述目录中找到自动生成的Obfuscar文件夹,加壳后的类库就存放在里面,拷贝出来即可使用。
PS:.net6的带WebAPI的exe好像加壳失败,待测试。
方式三:项目构建
1、在csproj 项目文件中添加安装Obfusca服务器托管网r的代码:
"Obfuscar" Version="2.2.33"> all runtime; build; native; contentfiles; analyzers; buildtransitive
View Code
2、在项目中添加一个Obfuscar.xml 文件,内容跟方式一的类似,再在csproj 项目文件中设置更新
"Obfuscar.xml"> PreserveNewest
View Code
3、在csproj 项目文件中设置自动构建
"ObfuscarTask" AfterTargets="AfterBuild"> $(Obfuscar) "Obfuscar.xml" "$(OutputPath)" Command="$(ObfuscateCommand)" />
View Code
PS:这种方式还没测试过,待测试
结语:
懒得写。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 基于 ACK Fluid 的混合云优化数据访问(五):自动化跨区域中心数据分发
作者:车漾 前文回顾: 本系列将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景,相关文章请参考: -基于 ACK Fluid 的混合云优化数据访问(一):场景与架构 -基于 ACK Fluid 的混合云优化数据访问(二):搭建弹性计算实例与第…