天天看點

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

原文: C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯) 前言

系列目錄

C#使用Xamarin開發可移植移動應用目錄

源碼位址:

https://github.com/l2999019/DemoApp

可以Star一下,随意 - -

說點什麼..

今天講講如何混淆我們的C#代碼,來達到反編譯的目的

今天的學習内容?

使用Dotfuscator來混淆C#代碼,防止反編譯.

正文

嗯,既然是用戶端應用,自然而然就需要一些防止源碼洩漏的手段.通過C#編寫的APP,完全是可以直接解壓APK,然後得到裡面的DLL然後進行反編譯的..

如下圖:

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

嗯..這樣就會造成代碼洩漏..

下面就介紹一下,如何使用VS自帶的Dotfuscator來進行混淆代碼.

1.安裝Dotfuscator

打開VS2017的安裝工具,如下,點選修改按鈕.

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

選擇單個元件,如下:

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

在代碼工具中找到Dotfuscator并添加.(注意:這裡我們安裝的是社群版,功能有限,如果需要更深度的混淆,請購買專業版..)

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

這樣,我們的安裝就完成了.

2.将Dotfuscator與Xamarin項目內建(重點)

   2.1下載下傳Dotfuscator-Xamarin MSBuild目标檔案

     這個檔案是用來生成的,直接下載下傳就行,位址:

下載下傳

    然後複制到項目路徑下.

  2.2保護我們的安卓項目.

     首先,我們要先解除安裝安卓項目,如圖:

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

   然後編輯csproj檔案.如圖:

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

 我們在PropertyGroup标簽裡,添加Dotfuscator的相關配置.

<DotfuscatorXamarinCliPath>(這裡是你dotfuscator的安裝位置)C:\VS2017\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE\dotfuscator.exe</DotfuscatorXamarinCliPath>
<DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
<DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>      

 第一個是你的Dotfuscator的安裝位置,自行選擇

  然後在我們檔案的最下面,導入剛剛下載下傳的生成檔案.如下圖:

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

設定生成選項,我們找到如下代碼:

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)
C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

這裡面的配置就是用來設定生成選項的,你可以任意選擇是debug還是Relase.

這裡,我們當然設定Relase,隻有釋出的時候才保護嘛 ..調試的時候保護有啥用 - - .

我們在這個标簽下,添加代碼如下:

<DotfuscatorXamarinEnabled>true</DotfuscatorXamarinEnabled>      

2.2生成項目,并設定混淆内容.

修改完成後,我們将項目重新加載進去.

然後存檔釋出.

如果一切正常的話,會彈出如下界面:

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

因為我這裡用的是免費的社群版,是以功能有限,

我們直接點選生成,完成後關閉這個界面.(很重要,不關閉..就一直卡在生成那裡..)

這樣,我們就完成了整個C#代碼的混淆工作.

3.反編譯混淆後的Dll

如圖所示,因為社群版的功能較少,是以隻能混淆一些變量名..其實混淆的程度有限.

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

專業版提供了更多的選擇..嗯..他可以直接混淆整個控制流程 如下效果:

C#使用Xamarin開發可移植移動應用進階篇(9.混淆代碼,防止反編譯)

寫在最後

今天的内容就這些了.其實這個混淆方案對于其他的C#項目也是适用的.嗯..大家可以随意試試.