Unity中针对Android Apk的签名验证(C#实现)
来源:互联网 发布:linux暴力破解字典 编辑:程序博客网 时间:2024/06/06 21:38
当Unity开发的游戏以Android Apk的形式发布之后,经常会遇到的一种情况就是别人对我们的游戏进行二次打包,也就是用他们的签名替换掉我们的签名,从而堂而皇之的将胜利果实占为己有。面对这样的情况,我们可以采取的一种方式就是对Apk包的签名进行验证,如果与我们的签名不一致,则可以采取黑屏或者直接退出等方式来阻止该盗版程序的运行。
示例代码如下:
using UnityEngine;using System.Collections;/// <summary>/// Signature verify tool class/// </summary>public class SignatureVerify{ /** * Verify the signature is correct **/ public static bool IsCorrect () { #if UNITY_EDITOR return true; #endif // 获取Android的PackageManager AndroidJavaClass Player = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); AndroidJavaObject Activity = Player.GetStatic<AndroidJavaObject> ("currentActivity"); AndroidJavaObject PackageManager = Activity.Call<AndroidJavaObject> ("getPackageManager"); // 获取当前Android应用的包名 string packageName = Activity.Call<string> ("getPackageName"); // 调用PackageManager的getPackageInfo方法来获取签名信息数组 int GET_SIGNATURES = PackageManager.GetStatic<int> ("GET_SIGNATURES"); AndroidJavaObject PackageInfo = PackageManager.Call<AndroidJavaObject> ("getPackageInfo", packageName, GET_SIGNATURES); AndroidJavaObject[] Signatures = PackageInfo.Get<AndroidJavaObject[]> ("signatures"); // 获取当前的签名的哈希值,判断其与我们签名的哈希值是否一致 if (Signatures != null && Signatures.Length > 0) { int hashCode = Signatures [0].Call<int> ("hashCode"); return hashCode == 8888888888;//我们签名的哈希值 } return false; } }
文章转载自 Unity中针对Android Apk的签名验证(C#实现),感谢 SpringMorning 提供好文章
0 0
- Unity中针对Android Apk的签名验证(C#实现),防止二次打包
- Unity中针对Android Apk的签名验证(C#实现)
- Unity中针对Android Apk的签名验证(C#实现),防止二次打包
- Unity中对Apk签名验证
- Android APK签名(针对jdk1.7)
- Android验证apk签名
- Android Robotium:apk重新签名,从而实现测试(APK,APKTest的签名一致)
- APK签名的实现
- Android的apk签名
- Android的apk签名
- android apk签名(为什么 如何做 验证)
- (转)android apk 签名(为什么 如何做 验证)
- android apk签名(为什么 如何做 验证)
- android apk签名(为什么 如何做 验证)
- android apk签名(为什么 如何做 验证)
- android apk签名(为什么 如何做 验证)
- android apk签名(为什么 如何做 验证)
- Unity打包android的apk与数据包.obb分离和apk签名
- USB之(六)USB设备驱动
- 算法竞赛入门经典:第八章 高效算法设计 8.8二分查找之范围统计
- 无法找到 PInvoke DLL“sqlceme30.dll”
- 数组中的逆序对
- 你还在写一堆的findViewById()吗?
- Unity中针对Android Apk的签名验证(C#实现)
- eclipse调试模式不能显示源码解决
- Javascript中的apply和call
- ibatis缓存机制cacheModel
- jQuery学习一
- NYOJ 17 单调递增最长子序列
- 浅析电商、社区、游戏常用的 MySQL 架构
- 投资和工商变更的问题
- 2006年中国首届杰出数据库工程师评选获奖名单