首页 > 系统 > Android > 正文

Android编程之防止反编译的实现方法

2019-10-24 20:33:50
字体:
来源:转载
供稿:网友

这篇文章主要介绍了Android编程之防止反编译的实现方法,涉及Android针对运行环境、签名及程序相关信息的获取与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Android编程之防止反编译的实现方法。分享给大家供大家参考,具体如下:

1. 判断程序是否运行在模拟器上

 

 
  1. boolean isRunningInEmualtor() { 
  2. boolean qemuKernel = false
  3. Process process = null
  4. DataOutputStream os = null
  5. try{  
  6. process = Runtime.getRuntime().exec("getprop ro.kernel.qemu");  
  7. os = new DataOutputStream(process.getOutputStream()); 
  8. BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK")); 
  9. os.writeBytes("exit/n");  
  10. os.flush(); 
  11. process.waitFor(); 
  12. // getprop ro.kernel.qemu == 1 在模拟器 
  13. // getprop ro.product.model == "sdk" 在模拟器 
  14. // getprop ro.build.tags == "test-keys" 在模拟器 
  15. qemuKernel = (Integer.valueOf(in.readLine()) == 1); 
  16. Log.d("com.droider.checkqemu""检测到模拟器:" + qemuKernel); 
  17. catch (Exception e){  
  18. qemuKernel = false
  19. Log.d("com.droider.checkqemu""run failed" + e.getMessage());  
  20. finally { 
  21. try{  
  22. if (os != null) {  
  23. os.close();  
  24. }  
  25. process.destroy();  
  26. catch (Exception e) { 
  27. }  
  28. Log.d("com.droider.checkqemu""run finally");  
  29. return qemuKernel; 

2. 检测keystore签名,再与之前得做比较

 

  1. public int getSignature(String packageName) {  
  2. PackageManager pm = this.getPackageManager(); 
  3. PackageInfo pi = null
  4. int sig = 0; 
  5. try { 
  6. pi = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES); 
  7. Signature[] s = pi.signatures; 
  8. sig = s[0].hashCode();  
  9. catch (Exception e1) { 
  10. sig = 0; 
  11. e1.printStackTrace(); 
  12. return sig; 

3. 检测包名,版本名和版本号,然后做判断:

  1. private String getAppInfo() { 
  2. try { 
  3. String pkName = this.getPackageName(); 
  4. String versionName = this.getPackageManager().getPackageInfo( 
  5. pkName, 0).versionName; 
  6. int versionCode = this.getPackageManager() 
  7. .getPackageInfo(pkName, 0).versionCode; 
  8. return pkName + " " + versionName + " " + versionCode; 
  9. catch (Exception e) { 
  10. return null

4. 把jpg图片写成是png格式得图片 但是最新版本的apktool已经修复了

5. 花指令,影响jd-gui 但是最新版本的jd-gui已经修复

 

 
  1. private static final char[] wJ = "0123456789abcdef".toCharArray(); 
  2. public static String imsi = "204046330839890"
  3. public static String p = "0"
  4. public static String keyword = "电话"
  5. public static String tranlateKeyword = "%E7%94%B5%E8%AF%9D"

在每个类里面加入 如上字段。。。。

https://***/ 一个第三方得”爱加密“网站 1.需要使用官方的打包key工具打包后上传到"爱加密"网站进行处理,然后到网站上面下载,下载后还要用"爱加密"的打包工具再次进行打包即可。

希望本文所述对大家Android程序设计有所帮助。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表