1. 程式人生 > >Unity3D 匯出的apk進行混淆和加固(防止反編譯)

Unity3D 匯出的apk進行混淆和加固(防止反編譯)

前言:

對於辛辛苦苦完成的apk程式被人輕易的反編譯了,那就得不償失了,這篇文章就是解決Unity打包出來的apk進行程式碼加固和混淆。

準備資料:

1Obfuscator.zip  作用是程式碼混淆,是Unity的一個外掛

2Apkdb.rar    作用是反編譯apk,做過修改之後回編譯成修改好的apk

3Reflector_8.5.0.179_XiaZaiBa.zip 作用是反編譯程式碼,方便檢視程式碼

4:梆梆助手.exe 作用是對apk進行重新簽名和對apk的加固

以上檔案下載地址:

如果連結無效,請聯絡我QQ:503115254

正文:

1:打包一個帶有簽名的apk

在打包Player Settings設定裡面,需要對簽名重新設定,簽名可以理解成為一個證書,可以設定密碼資訊,保證一部分的程式安全,據說在Unity5.0對程式的安全有了初步保障,有一個預設的簽名。但是個人習慣還是使用自己的簽名為好,如下圖:

 

以上都設定好之後,Alias下拉框選項就會多出一個選項,此時就是需要建立的簽名了

 

點選 Create a new key之後,如圖,填寫所需要的資訊,就可以建立了新的簽名了,新的簽名一定要儲存好,這個東西對於程式加固還有作用。如圖所示

 

我是儲存到桌面上了

然後正常釋出自己的apk就可以了

2:對apk進行反編譯

接下來就要用到上面介紹的各種工具了,首先使用的是Apkdb反編譯工具,首先解壓出來,這是一個安裝包,解壓之後,需要進行對其安裝,最好是關閉防毒軟體,安裝介面是一個dos介面,


選擇1 簡體中文就可以了,輸入1   然後回車繼續安裝

安裝過程中,會提示你需要安裝Java

,當然,對於已經打包出apk來說,這些肯定已經配置了,如果還沒有配置,則需要配置Java環境了,當然,還有AndroidSDK的配置,這個請自行搜尋,網上很多教程,這裡就不多說了,如圖所示:

 

按任意鍵繼續  就開始安裝程式了,等待安裝完畢後,會有一個選項,這裡選擇12都可以,我選擇1

然後會讓你選擇安裝器,這個選擇哪個都行,我選擇N

然後需要你重啟電腦,因為要配置滑鼠右鍵的功能

 

重啟後,右鍵自己釋出出來的apk,你會發現多了一些東西,這些東西都是有用的


點選APKDB編譯,就準備開始對apk進行反編譯

 

這裡選擇1  於是就開始反編譯了,編譯完成後,就在同級目錄下生成一個資料夾,這就是反編譯出來的檔案

 

然後就開始對程式碼的混淆了

3:對程式的程式碼混淆

這次使用的是Unity的外掛Obfuscator for Unity,解壓後是一個unitypackage包,匯入進去之後,你會發現工具欄多出了兩個工具,如圖所示

 

這裡主要使用的是Tools裡面的Obfuscator 選項,我們寫的程式碼是在\assets\bin\Data\Managed資料夾下,當然,你看到的是dll檔案,沒錯,我們的程式碼就是被編譯成了dll檔案,也就是Assembly-CSharp.dll,此時,你可以用Reflector進行反編譯dll來獲取裡面的程式碼(我分享出來的是綠色版本的Reflector,所以不需要安裝就可以使用),如圖所示

 

所以就要使用到混淆器,混淆器是把裡面的程式碼變數等資訊進行重新命名,這樣可讀性會變得非常差,接著,回到Unity中,點選Tools下的Obfuscator 選項,會彈出一個選擇資料夾的提示框,這個提示框就是我們剛剛提到的dll資料夾,也就是解壓後的資料夾,選擇這個Managed資料夾就可以了,它會自動進行程式碼混淆,

 

混淆完成後推出dos命令,此時的dll就被混淆了,利用我們的Reflector看下程式碼


全都是替換成了這類資訊,相信你會頭大的,沒事,電腦能認識就行。然後就是對已經修改好的apk回編譯成可以用的apk

4:回編譯成可用的apk

對於已經進行程式碼混淆的檔案來說,原先是apk進行反編譯得到的檔案,所以還需要回編譯回去,右鍵反編譯出來的資料夾,


同樣選擇使用APKDB編譯,此時出現的畫面略有不同,


這裡選擇1就可以了,等待回編譯完成後,自動輸出一個新的apk,在輸出之前,會有一個選項


選擇Y就是了,新的apk目錄是在原先目錄下重新建立了一個名為“已編譯***”資料夾,開啟後就是回編譯的檔案了。

到這裡,我們完成了對程式碼的混淆,但是還沒有進行加固,防止反編譯,所以,請往下看

5:使用梆梆助手來對apk進行加固

 

如果還沒有賬號的需要申請賬戶,下載梆梆助手才可以使用,

然後匯入自己的apk就可以了,這裡是流水式的走下來,所以只需要匯入和匯出就可以了,


新增單個apk檔案,選擇好剛剛混淆後的apk,然後你做的事情就是等,等待上傳完--加固完--下載完--已完成,當到已完成的時候,說明這裡已經可以匯出了,匯出需要前面提到的自己建立的簽名,這裡可是會用到的,如果不用,則apk安裝包可能會出現問題

 

選擇匯出簽名apk,選擇簽名檔案,輸入密碼,然後點選開始匯出

 

匯出的apk是經過混淆,經過加固比較安全的apk

9月19號更新:

其實這樣也算不是很安全,同時你也可以對程式碼進行加殼,網上一搜一大堆的加殼的工具,程式的安全沒有絕對的。

可以參考我的另外兩篇文章:

Unity程式設計筆錄--Unity Android加密dll http://blog.csdn.net/adambieber/article/details/49837503

Unity程式設計筆錄--Unity Android 加密 so http://blog.csdn.net/adambieber/article/details/49871245

好了,到這裡結束了,如果有什麼問題,請諮詢我的QQ503115254