欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-09 13:28:39
本文实例讲述了android编程之防止反编译的实现方法。分享给大家供大家参考,具体如下: 1. 判断程序是否运行在模拟器上 boolean isrunningi...

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

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

boolean isrunninginemualtor() {
  boolean qemukernel = false;
  process process = null;
  dataoutputstream os = null;
  try{ 
   process = runtime.getruntime().exec("getprop ro.kernel.qemu"); 
   os = new dataoutputstream(process.getoutputstream());
   bufferedreader in = new bufferedreader(new inputstreamreader(process.getinputstream(),"gbk"));
   os.writebytes("exit\n"); 
   os.flush();
   process.waitfor();
   // getprop ro.kernel.qemu == 1 在模拟器
   // getprop ro.product.model == "sdk" 在模拟器
   // getprop ro.build.tags == "test-keys" 在模拟器
   qemukernel = (integer.valueof(in.readline()) == 1);
   log.d("com.droider.checkqemu", "检测到模拟器:" + qemukernel);
  } catch (exception e){ 
   qemukernel = false;
   log.d("com.droider.checkqemu", "run failed" + e.getmessage()); 
  } finally {
   try{ 
    if (os != null) { 
     os.close(); 
    } 
    process.destroy(); 
   } catch (exception e) {
   } 
   log.d("com.droider.checkqemu", "run finally"); 
  }
  return qemukernel;
}

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

public int getsignature(string packagename) {  
  packagemanager pm = this.getpackagemanager();
  packageinfo pi = null;
  int sig = 0;
  try {
   pi = pm.getpackageinfo(packagename, packagemanager.get_signatures);
   signature[] s = pi.signatures;
   sig = s[0].hashcode(); 
  } catch (exception e1) {
   sig = 0;
   e1.printstacktrace();
  }
  return sig;
}

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

private string getappinfo() {
   try {
    string pkname = this.getpackagename();
    string versionname = this.getpackagemanager().getpackageinfo(
      pkname, 0).versionname;
    int versioncode = this.getpackagemanager()
      .getpackageinfo(pkname, 0).versioncode;
    return pkname + " " + versionname + " " + versioncode;
   } catch (exception e) {
   }
   return null;
}

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

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

private static final char[] wj = "0123456789abcdef".tochararray();
public static string imsi = "204046330839890";
public static string p = "0";
public static string keyword = "电话";
public static string tranlatekeyword = "%e7%94%b5%e8%af%9d";

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

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

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