Dotfuscator是一款.NET混淆器和壓縮器,防止你的應用程序被反編譯。html
保護整個應用程序就像在應用程序的Visual Studio項目文件中添加幾行代碼同樣簡單(例如,MyExecutable.csproj)。集成後,Dotfuscator Professional將自動保護您的全部程序集 - 不管是來自應用程序的項目仍是解決方案中的其餘項目。 每次的版本發佈也會自動保護。bash
本次《Dotfuscator教程:保護你的應用》包括如下內容:app
本篇文章主要介紹如何將Dotfuscator集成到Visual Studio項目中。ide
要將Dotfuscator集成到項目中,請在Visual Studio中編輯項目文件(.csproj)並進行以下所示的更改。ui
.NET Frameworkthis
要保護.NET Framework項目,請複製下面顯示的新XML元素(<PropertyGroup>等),並在結束標籤</Project>以前將它們粘貼到項目文件中。請注意,元素的順序很重要。spa
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
<!-- ...existing tags... -->
<!-- Set build properties for Dotfuscator -->
<PropertyGroup>
<!-- Generate a default Dotfuscator config file (DotfuscatorConfig.xml) -->
<!-- TODO: Set this to false after the file is generated by the first local build -->
<DotfuscatorGenerateConfigFileIfMissing>true</DotfuscatorGenerateConfigFileIfMissing>
<!-- Enable Dotfuscator for Release builds -->
<DotfuscatorEnabled Condition="'$(Configuration)' == 'Release'">true</DotfuscatorEnabled>
</PropertyGroup>
<!-- Import the Dotfuscator MSBuild targets last -->
<Import Project="$(MSBuildExtensionsPath)\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Common.targets"/>
</Project>複製代碼
.NET Core or .NET Standard版本控制
要保護.NET Core或.NET Standard項目,請首先從項目的根<Project>標記中刪除Sdk屬性。而後,將下面顯示的新元素複製到項目文件中的相應位置。code
<Project>
<!-- ORIGINALLY WAS: <Project Sdk="Microsoft.NET.Sdk">
The Sdk attribute has been replaced with explicit <Import> tags
to ensure Dotfuscator's targets are imported after "Sdk.targets" --> <!-- Import SDK properties --> <!-- (before any existing tags) --> <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> <!-- ...existing tags... --> <!-- Import SDK targets --> <!-- (after any existing tags but before Dotfuscator targets) --> <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> <!-- Set build properties for Dotfuscator --> <PropertyGroup> <!-- Generate a default Dotfuscator config file (DotfuscatorConfig.xml) --> <!-- TODO: Set this to false after the file is generated by the first local build --> <DotfuscatorGenerateConfigFileIfMissing>true</DotfuscatorGenerateConfigFileIfMissing> <!-- Enable Dotfuscator for Release builds --> <DotfuscatorEnabled Condition="'$(Configuration)' == 'Release'">true</DotfuscatorEnabled> </PropertyGroup> <!-- Import the Dotfuscator MSBuild targets last --> <Import Project="$(MSBuildExtensionsPath)\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Common.targets"/> </Project>複製代碼
Xamarincdn
Dotfuscator與Xamarin應用程序集成是Xamarin構建過程的一部分,可以使用與其餘.NET平臺相同的方法。可是,在開始以前,你應該瞭解Xamarin集成的一些特別的方面。
要保護你的Xamarin應用程序,你必須將Dotfuscator集成到每一個輸出項目(Android,iOS和UWP)中。Dotfuscator將保護項目輸出目錄中源自項目解決方案的全部程序集。
爲了保護Xamarin項目(咱們建議從Android開始),請在結束標記</Project>以前將下面顯示的新元素複製到項目文件中的相應位置。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- ...existing tags... -->
<!-- Set build properties for Dotfuscator -->
<PropertyGroup>
<!-- Generate a default Dotfuscator config file (DotfuscatorConfig.xml) -->
<!-- TODO: Set this to false after the file is generated by the first local build -->
<DotfuscatorGenerateConfigFileIfMissing>true</DotfuscatorGenerateConfigFileIfMissing>
<!-- Enable Dotfuscator for Release -->
<DotfuscatorEnabled Condition="'$(Configuration)' == 'Release'">true</DotfuscatorEnabled>
<!-- Enable Dotfuscator for Ad-Hoc (only needed for iOS) -->
<DotfuscatorEnabled Condition="'$(Configuration)' == 'Ad-Hoc'">true</DotfuscatorEnabled>
<!-- Enable Dotfuscator for AppStore (only needed for iOS) -->
<DotfuscatorEnabled Condition="'$(Configuration)' == 'AppStore'">true</DotfuscatorEnabled>
<!-- Only needed when using Tamper Checks for Android -->
<!-- TODO: If using Tamper Checks for Android, set this to the SHA-1 fingerprint of the certificate used to sign the app -->
<DotfuscatorAndroidSigningCertFingerprint></DotfuscatorAndroidSigningCertFingerprint>
</PropertyGroup>
<!-- Import the Dotfuscator MSBuild targets last -->
<Import Project="$(MSBuildExtensionsPath)\PreEmptive\Dotfuscator\4\PreEmptive.Dotfuscator.Common.targets"/>
</Project>複製代碼
Unity
將Dotfuscator集成到Unity項目中須要特殊配置,本次教程不包含這些配置。後續會整理的。
在Visual Studio中,將更改保存到項目文件,關閉選項卡,而後從新加載項目。要得到受保護的應用程序,請按照正常狀況在發佈配置中構建項目。
做爲初始構建的一部分,Dotfuscator將生成一個配置文件,DotfuscatorConfig.xml,它具備默認保護設置。構建將發出警告(見上面的屏幕截圖),在第一次構建中你能夠忽略。將生成的文件加入版本控制。
而後,構建將調用Dotfuscator來保護項目輸出目錄中的解決方案程序集(.exe和.dll文件)(例如,bin\Release)。Dotfuscator還將在新的DotfuscatorReports目錄中生成報告文件;你應該從版本控制中排除此目錄。
一旦構建完成,您的應用程序如今就受Dotfuscator保護了。
注意:有關診斷構建或運行時問題的幫助,請參閱疑難解答。
在第一次構建期間,Dotfuscator生成了一個具備默認保護設置的配置文件DotfuscatorConfig.xml。此功能在設置時頗有用,可是一旦文件存在(並由版本控制跟蹤),你應該禁用此功能,由於它能夠屏蔽某種構建錯誤。
要禁用配置文件生成,請再次編輯項目文件(.csproj)並替換如下行:
將
<!-- Generate a default Dotfuscator config file (DotfuscatorConfig.xml) -->
<!-- TODO: Set this to false after this file is generated by the first local build -->
<DotfuscatorGenerateConfigFileIfMissing>true</DotfuscatorGenerateConfigFileIfMissing>複製代碼
替換爲
<!-- Error if the Dotfuscator config file (DotfuscatorConfig.xml) is missing -->
<DotfuscatorGenerateConfigFileIfMissing>false</DotfuscatorGenerateConfigFileIfMissing>複製代碼