代码中获取md签名值,防二次打包

来源:互联网 发布:程序化交易编程语言 编辑:程序博客网 时间:2024/05/11 06:00

防二次打包

apk破解后可以进行修改并重新打包,从而制造一个山寨的APP。因此为了防止自己辛辛苦苦做的APP被别人山寨,就得在代码中加上防二次打包的处理。具体说来,首先开发者在打包前记下签名证书的MD码,然后在代码中获取app安装后的签名,对比两个签名的MD值是否一致,如果不一致就退出app,这样就能防止被二次打包了。


下面是获取apk签名的代码例子
[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. public static String getSignMD5(Context context) {  
  2.     String signMD5 = "";  
  3.     String packageName = context.getPackageName();  
  4.     PackageManager pkgMgr = context.getPackageManager();  
  5.     PackageInfo info = null;  
  6.     try {  
  7.         info = pkgMgr.getPackageInfo(packageName,  
  8.                 PackageManager.GET_SIGNATURES);  
  9.     } catch (PackageManager.NameNotFoundException e) {  
  10.         return signMD5;  
  11.     }  
  12.     if (info == null) {  
  13.         return signMD5;  
  14.     } else {  
  15.         Signature[] signs = info.signatures;  
  16.         if ((signs == null) || (signs.length == 0)) {  
  17.             return signMD5;  
  18.         } else {  
  19.             Signature sign = signs[0];  
  20.             signMD5 = MD5Util.encrypBytes(sign.toByteArray());  
  21.             return signMD5;  
  22.         }  
  23.     }  
  24. }  
0 0