Unity教程之-Unity3d中針對Android Apk的簽名驗證(C#實現)


當Unity開發的游戲以Android Apk的形式發布之后,經常會遇到的一種情況就是別人對我們的游戲進行二次打包,也就是用他們的簽名替換掉我們的簽名,從而堂而皇之的將勝利果實占為己有。面對這樣的情況,我們可以采取的一種方式就是對Apk包的簽名進行驗證,如果與我們的簽名不一致,則可以采取黑屏或者直接退出等方式來阻止該盜版程序的運行。

 

示例代碼如下:
 1 using UnityEngine;
 2 using System.Collections;/// <summary>
 3 /// Signature verify tool class
 4 /// </summary>
 5 public class SignatureVerify
 6 {
 7 /**
 8 * Verify the signature is correct
 9 **/
10 public static bool IsCorrect ()
11 {
12 #if UNITY_EDITOR
13 return true;
14 #endif
15  
16 // 獲取Android的PackageManager
17 AndroidJavaClass Player = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");
18 AndroidJavaObject Activity = Player.GetStatic<AndroidJavaObject> ("currentActivity");
19 AndroidJavaObject PackageManager = Activity.Call<AndroidJavaObject> ("getPackageManager");
20  
21 // 獲取當前Android應用的包名
22 string packageName = Activity.Call<string> ("getPackageName");
23  
24 // 調用PackageManager的getPackageInfo方法來獲取簽名信息數組
25 int GET_SIGNATURES = PackageManager.GetStatic<int> ("GET_SIGNATURES");
26 AndroidJavaObject PackageInfo = PackageManager.Call<AndroidJavaObject> ("getPackageInfo", packageName, GET_SIGNATURES);
27 AndroidJavaObject[] Signatures = PackageInfo.Get<AndroidJavaObject[]> ("signatures");
28  
29 // 獲取當前的簽名的哈希值,判斷其與我們簽名的哈希值是否一致
30 if (Signatures != null && Signatures.Length > 0)
31 {
32 int hashCode = Signatures [0].Call<int> ("hashCode");
33 return hashCode == 8888888888;//我們簽名的哈希值
34  
35 }
36 return false;
37 }
38 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM