Beg*_*udy 16 .net obfuscation clickonce dotfuscator
如果会发布ClickOnce版本,Dotfuscator如何对其进行模糊处理?
Joe*_*rle 23
您可以使用商业版Dotfuscator通过添加部署清单("foo.application")作为Dotfuscator项目的输入来自动模糊ClickOnce应用程序.Dotfuscator允许您向ClickOnce应用程序中包含的程序集添加任何必要的排除项,并将创建包含模糊程序集的更新的部署和应用程序清单.
Visual Studio中包含的免费Dotfuscator版本(包括Visual Studio 2010)没有自动混淆ClickOnce应用程序的功能.为了获得功能模糊的ClickOnce应用程序,您需要重新创建或更新ClickOnce清单,因为模糊处理会更改程序集的签名.
您可以使用mage.exe或mageui.exe(包含在Windows/.NET SDK中)来更新ClickOnce清单.如果您要使用mage.exe,则需要注意不能在ClickOnce选项中使用"使用.deploy文件扩展名"选项,因为它无法识别它.
假设您的ClickOnce应用程序名为"Foo"且版本为1.0.0.0,您需要遵循的过程是:
更新应用程序清单并将其重新签名:
mage.exe -Update"Application Files\Foo_1_0_0_0\Foo.exe.manifest"-CertFile"c:\ Foo\foo.pfx" - 密码密码
更新部署清单并将其重新签名:
mage.exe -Update Foo.application -AppManifest"Application Files\Foo_1_0_0_0\Foo.exe.manifest"-CertFile"c:\ Foo\foo.pfx" - 密码密码
您现在拥有使用模糊处理程序集的有效应用程序和部署清单.您还可以使用MageUI.exe工具完成相同的任务(并且它知道如何处理扩展名为.deploy的程序集)但是自动化并不容易.
小智 5
我有一个类似于Joe Kuemerle的解决方案,但是在发布过程之前。这可以在Visual Studio和MSBuild命令行中进行发布。
将BeforePublish目标添加到项目文件。
<ItemGroup>
<ClickOnceFiles Include="bin\Release\ClickOnce.*"/>
</ItemGroup>
<Target Name="BeforePublish">
<Exec Command="{path to dotfuscator}\dotfuscator.exe Dotfuscator.xml" />
<Exec Command="mage.exe -u bin\Release\ClickOnce.exe.manifest" />
<Exec Command="mage.exe -u bin\Release\ClickOnce.application -AppManifest bin\Release\ClickOnce.exe.manifest" />
<Copy SourceFiles="@(ClickOnceFiles)" DestinationFolder="obj\Release" OverwriteReadOnlyFiles="True" />
</Target>
Run Code Online (Sandbox Code Playgroud)
ClickOnce的文件ClickOnce.application,ClickOnce.exe和ClickOnce.exe.manifest。我dotfuscator.xml的文件夹与项目文件位于同一文件夹中。关键是最后一个命令,将ClickOnce文件复制到该obj文件夹。