如何防止app二次打包
2015-05-06 14:26
246 查看
来源:http://tieba.baidu.com/p/3289026645
http://www.2cto.com/kf/201503/384492.html
调用的时候
SecondPackage sePa= new SecondPackage(this);
if(sePa.getSignInfo() == false){
finish();
}
http://www.2cto.com/kf/201503/384492.html
public class SecondPackage{ private final static String TAG = "SecondPackage" public SecondPackage(Context context){ // TODO Auto-generated constructor stub this.context = context; } private Context context; /************protect second package*******************/ private void byte2hex(byte b, StringBuffer buf) { char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; int high = ((b & 0xf0) >> 4); int low = (b & 0x0f); buf.append(hexChars[high]); buf.append(hexChars[low]); } /* * Converts a byte array to hex string */ private String toHexString(byte[] block) { StringBuffer buf = new StringBuffer(); int len = block.length; for (int i = 0; i < len; i++) { byte2hex(block[i], buf); if (i < len-1) { buf.append(":"); } } return buf.toString(); } public boolean getSignInfo() { boolean checkright = false; try { PackageInfo packageInfo = context.getApplicationContext().getPackageManager().getPackageInfo( "com.xxx.xxx", PackageManager.GET_SIGNATURES); Signature[] signs = packageInfo.signatures; Signature sign = signs[0]; int code = sign.hashCode(); MessageDigest md = MessageDigest.getInstance("MD5"); md.update(sign.toByteArray()); byte[] digest = md.digest(); String res = toHexString(digest); Log.e(TAG, "apk md5:"+res); //if (code == xxxxxxxxx) { Log.i(TAG, "hashCode:" + code); //对比MD5值和hashcode是否和自己原来的MD5相同 if(res.equals("xxxxxxxxxx") && code == yyyyyyyyyy){ checkright = true; } //parseSignature(sign.toByteArray()); } catch (Exception e) { e.printStackTrace(); } return checkright; } void parseSignature(byte[] signature) { try { CertificateFactory certFactory = CertificateFactory .getInstance("X.509"); X509Certificate cert = (X509Certificate) certFactory .generateCertificate(new ByteArrayInputStream(signature)); byte[] buffer = cert.getEncoded(); System.out.println( "md5: "+ new String(buffer)); } catch (CertificateException e) { e.printStackTrace(); } } /***********************************/ }
调用的时候
SecondPackage sePa= new SecondPackage(this);
if(sePa.getSignInfo() == false){
finish();
}
相关文章推荐
- Android APP如何防止二次打包------对比签名
- Android APP如何防止二次打包
- Android APP如何防止二次打包
- 如何防止 Android 应用被二次打包?(转自知乎)
- 如何防止APP被二次打包
- APP如何防止二次打包
- 如何防止二次打包
- Android APP如何防止二次打包
- 【分享】Android APP如何防止二次打包
- 如何有效防止Java程序源码被人偷窥(zhuan)
- 如何解包/编辑/打包boot.img文件,recovery.img 文件
- C++编程中如何防止内存溢出问题
- [工具] 小白如何修改解包打包system.img
- 服务器被ddos攻击?分析如何防止DDOS攻击?
- 如何防止按钮多次点击开启多个线程
- Android如何防止apk程序被反编译
- 如何防止页面中的敏感信息被提取
- 面试题——Struts2如何防止表单重复提交
- 如何为winform程序打包(图解)
- Firebird如何防止空值扩散