Android编程之防止反编译的实现方法
作者:lee0oo0 时间:2021-10-31 04:23:35
本文实例讲述了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程序设计有所帮助。
标签:Android,反编译
0
投稿
猜你喜欢
浅谈Java解释器模式
2021-08-23 23:45:59
HttpClient 在Java项目中的使用详解
2021-12-06 02:36:57
spring mvc中的@ModelAttribute注解示例介绍
2023-10-15 07:07:06
实例代码讲解JAVA 观察者模式
2023-09-11 19:22:18
java生成指定范围随机数的多种代码
2023-04-28 07:51:15
Spring Boot示例代码整合Redis详解
2022-03-20 19:23:37
Unity3D绘制地形的实现方法
2022-12-01 01:06:46
Android Service详解及示例代码
2021-12-24 05:44:17
Java中Map遍历的九种方式汇总
2023-05-02 21:57:27
Entity Framework模型优先与实体对象查询
2022-11-18 07:19:36
Android布局之LinearLayout自定义高亮背景的方法
2022-07-05 09:48:10
Android APK使用Debug签名重新打包 Eclipse更改默认Debug签名
2022-03-07 13:27:12
使用PageHelper插件实现Service层分页
2023-03-06 00:40:39
c#获取相同概率随机数的算法代码
2022-09-07 21:18:13
SpringBoot实现项目健康检查与监控
2023-10-28 19:14:25
Java序列化与反序列化的实例分析讲解
2022-09-16 05:58:39
Android组件banner实现左右滑屏效果
2023-11-01 17:54:59
Spring实战之XML与JavaConfig的混合配置详解
2023-07-11 18:07:20
C#命令模式用法实例
2021-10-21 12:46:02
IOS开发向右滑动返回前一个页面功能(demo)
2021-09-23 04:30:11