老實(shí)說(shuō),發(fā)布一個(gè)庫(kù)、桌面應(yīng)用程序或移動(dòng)應(yīng)用程序可能有點(diǎn)嚇人。一旦你的軟件可以免費(fèi)提供給世界,你就失去了如何使用它的某種程度的控制權(quán)。特別是,開發(fā)人員經(jīng)常擔(dān)心逆向工程的威脅。
創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的蔡家坡網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
在許多平臺(tái)和語(yǔ)言中,代碼混淆工具是防止逆向工程的常見(jiàn)方法。例如,如果你是一個(gè)Android開發(fā)者,你可能已經(jīng)使用到收縮和混淆的java代碼。
現(xiàn)在,Xamarin的開發(fā)商獲得同樣的保護(hù),在所有主要的移動(dòng)設(shè)備的家庭,將Android和iOS移植到通用的Windows(UWP)。完成這個(gè)工作 的工具叫做 Dotfuscator, 社區(qū)版本 在 Visual Studio中已經(jīng)可以使用了。
今天,我將解釋如何混淆可以保護(hù)Xamarin。Android應(yīng)用程序從逆向工程,以及如何你可以把同樣的保護(hù)自己的Xamarin程序簡(jiǎn)單的幾個(gè)步驟。
混淆是一個(gè)應(yīng)用程序編譯的代碼轉(zhuǎn)換成功能相同但難于逆向工程的代碼的過(guò)程。通常,這是由一個(gè)自動(dòng)混淆工具完成的,比如 obfuscator。下面是一個(gè)簡(jiǎn)單的例子,演示如何防止反工程混淆應(yīng)用程序。
考慮下面的一個(gè)Xamarin.Android 游戲源代碼中的一個(gè)C#方法:
當(dāng)這個(gè)游戲的開發(fā)人員準(zhǔn)備將它部署到設(shè)備上,或者上傳到應(yīng)用程序商店時(shí),他們將源代碼編譯成庫(kù),然后將這些庫(kù)打包到一個(gè)應(yīng)用程序包中。在這個(gè)例子中,開發(fā)商包庫(kù)到Android設(shè)備上分配一個(gè)apk文件。
然而,一旦應(yīng)用程序發(fā)布到App Store,一個(gè)糟糕的演員可以很容易地獲取和逆向APK,生產(chǎn)反編譯的代碼,和原始的源代碼幾乎相同:
注意,類型、方法和成員標(biāo)識(shí)符在這里與源代碼中的標(biāo)識(shí)符相同,即使這些代碼元素通常不能從項(xiàng)目外部訪問(wèn)(也就是說(shuō),它們被標(biāo)記為internal)。internal要注意,該方法的一般控制流,如if語(yǔ)句的順序,是顯而易見(jiàn)的。
如果,在分發(fā)的apk,開發(fā)商也通過(guò)Dotfuscator社區(qū)版混淆這個(gè)庫(kù),逆向工程的結(jié)果會(huì)不同:
代碼已被重命名混淆保護(hù),代碼混淆的一種基本形式。名稱簡(jiǎn)單的屬性, 比如ArrowsOnHand,取而代之的是方法調(diào)用與直觀的名字, 諸如b 和 g。其他代碼元素也同樣被重命名。這使得對(duì)反編譯后的代碼更難閱讀和推理,作為重要的上下文線索提供的名稱不可用。
重命名混淆是這個(gè)博客文章的主要焦點(diǎn),但是我們將討論更高級(jí)的混淆形式,以及如何在以后應(yīng)用它們。
現(xiàn)在,讓我們來(lái)看看如何整合Dotfuscator 社區(qū)版重合名混淆到你的Xamarin構(gòu)建管道中。作為一個(gè)例子,我將使用Xamarin.Android應(yīng)用程序在上一節(jié)中提到的。你可以按照你自己的Xamarin APP,包括iOS和UWP。
我們將使用 優(yōu)先保護(hù) – Dotfuscator, 一個(gè) .NET 混淆器和保護(hù)工具,現(xiàn)在也支持Xamarin。
注:這些步驟假設(shè)您正在為Windows開發(fā)VisualStudio 2017的應(yīng)用程序。
首先,你需要在你的開發(fā)機(jī)上安裝Dotfuscator。之后我們將使用Dotfuscator的命令行接口,您還需要注冊(cè)您的副本并記錄到接口的路徑。
安裝和設(shè)置Dotfuscator:
訪問(wèn) Dotfuscator 下載 面,它在優(yōu)先解決網(wǎng)站。
下載Visual Studio 2017最新的Dotfuscator 社區(qū)版 (CE)。
Visual Studio包含了 Dotfuscator,P優(yōu)先解決偶爾發(fā)布重要更新將Visual Studio版本之間。 安裝Dotfuscator方法是確認(rèn)你已經(jīng)更新到最新版本。
注冊(cè)以后 或者檢查你的注冊(cè)狀態(tài),查找 注冊(cè)狀態(tài) 文本,在Dotfuscator社區(qū)版的開始頁(yè)的右上角。
dotfuscatorCLI.exe是Dotfuscator 社區(qū)版命令行接口,記下可執(zhí)行文件 的絕對(duì)路徑,以后會(huì)用到。
在這個(gè)路徑中,定位 Dotfuscator 社區(qū)版擴(kuò)展文件,它在 *\Common7\IDE\Extensions\PreEmptiveSolutions\DotfuscatorCE。
瀏覽你安裝Visual Studio 2017的路徑。比如Visual Studio 2017 專業(yè)版的默認(rèn)安裝路徑是 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional。
簡(jiǎn)化集成過(guò)程,Dotfuscator組創(chuàng)建了MSBuild目標(biāo)文件,你可以參考Xamarin項(xiàng)目。 你也可以從這里下載。
保存PreEmptive.Dotfuscator.Xamarin.targets 文件到你的解決方案路徑,并受控。
下一步,修改想要混淆的Visual Studio項(xiàng)目的項(xiàng)目文件。步驟如下:
注意你想要保護(hù)的項(xiàng)目的 構(gòu)建配置。 通常這些都是除了Debug配置之外的所有配置。查看更多指導(dǎo),請(qǐng)參閱從完全文檔中選擇如何保護(hù)一節(jié)。
在文本編輯器中打開項(xiàng)目文件。一個(gè) C#的樣例項(xiàng)目將是`YourProjectName.csproj`。
請(qǐng)注意從該文件到您下載的構(gòu)建集成文件的相對(duì)路徑。
通過(guò)在文件中添加以下行導(dǎo)入構(gòu)建集成文件, 在</Project> 標(biāo)簽之后:
<Import Project="..\..\PreEmptive.Dotfuscator.Xamarin.targets" />,使用步驟3中提到的絕對(duì)路徑。
<DotfuscatorXamarinCliPath>C:\pathto\dotfuscatorCLI.exe</DotfuscatorXamarinCliPath>, 用絕對(duì)路徑替代你之前記錄的Dotfuscator社區(qū)版命令行接口。
<DotfuscatorXamarinConfigFileName>DotfuscatorConfig.xml</DotfuscatorXamarinConfigFileName>
<DotfuscatorXamarinGenerateNewConfigFile>true</DotfuscatorXamarinGenerateNewConfigFile>
<DotfuscatorXamarinEnabled>true</DotfuscatorXamarinEnabled>
<ItemGroup><None Include="DotfuscatorConfig.xml" /></ItemGroup>
現(xiàn)在你可以使用Dotfuscator的混淆保護(hù)來(lái)構(gòu)建你的應(yīng)用程序。這樣做:
在Visual Studio中打開并重新加載你的項(xiàng)目。
選擇一個(gè)解決方案生成配置,以執(zhí)行您決定保護(hù)的項(xiàng)目構(gòu)建配置。
構(gòu)建這個(gè)項(xiàng)目。
在第一次構(gòu)建之后,注意建立輸出包含以下幾行關(guān)于Dotfuscator:
注意添加一個(gè)DotfuscatorConfig.xml文件到你的工程中。它是Dotfuscator配置文件,告訴Dotfuscator如何混淆代碼。建議查看源代碼控制。
在文件系統(tǒng)中,注意新的DotfuscatorReports路徑會(huì)出面在你的項(xiàng)目路徑中。這個(gè)路徑包含了項(xiàng)目如何被混淆的信息,包括了如何逆向和重命名處理。您應(yīng)該像構(gòu)建輸出那樣對(duì)待該目錄,并擁有源代碼管理器忽略它。
測(cè)試應(yīng)用程序,如果看到錯(cuò)誤,需要配置Dotfuscator further進(jìn)一步確定正確的保護(hù)行為。請(qǐng)參見(jiàn)下一節(jié)以供參考。
繼續(xù)開發(fā)應(yīng)用,像平常一樣構(gòu)建。當(dāng)Dotfuscator 用于構(gòu)建,構(gòu)建輸出會(huì)包含如下幾行:
有關(guān)使用混淆繼續(xù)開發(fā)的更多信息, 請(qǐng)查看Dotfuscator 用戶指南的 持續(xù)發(fā)展 一節(jié)。
在某些情況下,應(yīng)用程序假定編譯時(shí)代碼元素的名稱在運(yùn)行時(shí)是相同的。這是特別真實(shí)的Xamarin程序,依靠XAML和反射。重命名混淆可以打破這個(gè)假設(shè),造成混淆的應(yīng)用程序有不同的表現(xiàn)。
而新的版本將能夠更好的自動(dòng)處理這些場(chǎng)景,某些情況下,可能需要手動(dòng)配置。用于說(shuō)明和示例,請(qǐng)查看Dotfuscator用戶指南的 確定重命名排除 頁(yè)。
而不是免費(fèi)的Dotfuscator大眾版,你也可以使用 Dotfuscator專業(yè)片混淆你的Xamarin應(yīng)用。 專業(yè)版是許可用于商業(yè)產(chǎn)品,并且自由試用也是允許更新請(qǐng)求的。
查看社區(qū)版和專業(yè)版的差別,考慮早期的游戲示例。如果開發(fā)者通過(guò)Dotfuscator專業(yè)版代表社區(qū)版來(lái)保護(hù)庫(kù),逆向工程的結(jié)果看起來(lái)更像:
除了重命名混淆,此代碼現(xiàn)在也通過(guò)控制流混淆保護(hù)。原始代碼的語(yǔ)句分散在鈍角的“開關(guān)”塊中 以看似隨機(jī)的順序, 使它很難跟隨。這些和其它混淆的高級(jí)形式都是Dotfuscator專業(yè)版特有的。
在這篇博客中,我們看到了如何使用Dotfuscator來(lái)保護(hù)Xamarin庫(kù)和應(yīng)用程序,使之不容易被逆向工程。我使用了一個(gè)Android應(yīng)用程序來(lái)做例子,這些步驟同樣適用于iOS和UWP項(xiàng)目,While I used an Android app as an example, these same steps can also be applied to iOS and UWP projects,所以你可以保護(hù)你的應(yīng)用程序,不管它運(yùn)行在什么平臺(tái)上。
如何使用Dotfuscator保護(hù)Xamarin工程的更多信息,可以查閱 Dotfuscator用戶指南的Xamarin頁(yè)。 這里有所有平臺(tái)的集成Dotfuscator到一個(gè)Xamarin工程的git倉(cāng)庫(kù)。
你也可以通過(guò)訪問(wèn) 優(yōu)先解決方案博客來(lái)獲取混淆空間的最新開發(fā)草席, 也可以在 twitter.com/preemptive跟隨優(yōu)先解決。
網(wǎng)站欄目:使用Dotfuscator保護(hù)你的Xamarin應(yīng)用程序
URL地址:http://jinyejixie.com/article42/gpiiec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、ChatGPT、網(wǎng)站改版、營(yíng)銷型網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)