当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 }

转载于:https://www.cnblogs.com/porter/p/6961629.html

Unity教程之-Unity3d中针对Android Apk的签名验证(C#实现)相关推荐

  1. unity3d android包太大了,unity/unity3d编译成android apk包瘦身方法

     unity/unity3d编译成android apk包瘦身方法 本文系原创,请转发的朋友带上我的链接. 相信用unity开发的同学都会遇到类似的经历:明明资源图片不大,但是发现打包后apk文件 ...

  2. 针对Android APK和API的免费漏洞扫描工具,Yaazhini

    Yaazhini是一款针对Android APK和API的免费漏洞扫描工具,这款工具提供了用户友好的操作界面,广大移动端安全研究人员可以在Yaazhini的帮助下,轻松扫描任何Android应用程序的 ...

  3. unity3d android jar,c# – 访问unity3d中的android jar

    我有一个相机手电筒的 android项目,从eclipse部署工作正常.我试图从unity3d中的C#代码访问手电筒功能,但它不起作用.为了验证我是否正确调用了android方法,我在同一个activ ...

  4. unity3d php js,【Unity开发】unity3d中的http通信?post/get

    前言 Unity3d 是一个跨平台的引擎,在移动互联网浪潮之中,尤其是移动游戏3d方向上,Unity3d 毫无疑问是最耀眼的明星.Unity3d的http通信很简单,也非常好用,下面通过http和ph ...

  5. Android APK的签名--笔记版 V1 签名和V2签名总结

    1. 工具介绍 jarsigner 是JDK提供的针对jar包签名的通用工具, 位于 JDK/bin/jarsigner apksigner 是Google官方提供的针对Android apk 签名验 ...

  6. Android APK签名总结-- V1签名和V2签名使用和区别

    1. 工具介绍 jarsigner 是JDK提供的针对jar包签名的通用工具, 位于 JDK/bin/jarsignerapksigner 是Google官方提供的针对Android apk 签名验证 ...

  7. 【Unity3D基础教程】给初学者看的Unity教程(四):通过制作Flappy Bird了解Native 2D中的RigidBody2D和Collider2D...

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 在第一篇文章[Unity3D基础教程] ...

  8. Unity发布Android APK去掉Unity启动Logo教程

    Unity发布Android APK去掉Unity启动Logo教程 我们要解决的问题: 黑屏时间问题和启动Logo问题,之所以黑屏是因为Activity启动后mUnityPlayer 中的内容还没有准 ...

  9. unity 3d iphone android 通用,在Unity3D中使用iPhone原生UI

    众所周知, Unity中没有提供UI解决方案, 只能靠第三方的插件来完成. 比较著名的有NGUI等, 但是这种方案不仅需要额外付费(虽然不多), 并且类似NGUI的插件还不那么易用, 使用起来过于复杂 ...

最新文章

  1. 青源 LIVE 预告 | 北大王一飞:高效 GAN 采样算法 (ECML 最佳论文解读)
  2. 学Web前端你不能不知道的几点知识
  3. Lock和synchronized的选择
  4. Apache(四)访问验证方式
  5. 砸黑板! 正则表达式!!!re 模块
  6. Redis-秒杀场景应用
  7. java网上购物系统_基于java的网上购物系统的设计与实现
  8. JSP教程:学习路线和开发工具安装视频
  9. java 红包接口开发_java调用微信现金红包接口的心得与体会总结
  10. flutter AppBar背景渐变色
  11. C#调用obs studio 二次开发 源码分析 编译
  12. httprunner(9)运行测试用例的方式总结
  13. k8s对外攻击面总结
  14. Linux 文件的属性
  15. 各种神经网络的应用领域,神经网络技术及其应用
  16. 李沐精读论文:ViT 《An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale》
  17. (网页)Http状态码大全(200、404、500等)(转CSDN)
  18. vista系统重装下载安装教程
  19. 1024程序员节,祝大家节日快乐,NoBug!
  20. 什么是Jython?

热门文章

  1. Linux 常用C函数说明-文件权限控制篇
  2. 四大浏览器再战Windows平台:Opera勇夺第一
  3. 从零学ELK系列(九):Nginx接入ELK(超详细图文教程)
  4. SCPPO(一):禅道的安装
  5. 书屋(三):《浪潮之巅》品各大百年公司兴衰历程
  6. 等级考试(三):三级网络---似曾相识(续)
  7. GitHub标星2600,从零开始的深度学习实用教程 | PyTorch官方推荐
  8. 1200万!硅谷AI大牛一年赚够北京二环一套房
  9. 全球AI人才只有2万多,仅3000人在求职 | 报告
  10. 这些互联网巨头,明年可能会纷纷杀入AI芯片战局