当前位置:首页 » 安卓系统 » android混淆jar

android混淆jar

发布时间: 2023-03-05 11:14:21

㈠ Android项目里如何混淆自己打的jar包或者防止被反编译

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.proct.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 Studio打包混淆的Jar

混淆android工程打成的jar包方式如下:
从SDK2.3开始、在android-sdk-windows\tools\下面多了一个proguard文件夹让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以

㈢ Android第三方类库中的jar包不被混淆

假如你的项目中有这样一个image类库, 打开image类库下的build.gradle文件,查看里面有哪些 引用包 ,如果lib里面也有包, lib中的也需要查看

假如现在,让 最后一个" compile'com.blankj:utilcode:1.9.8 '" 不被混淆

打开图中的 External Libraries 文件, 我们导入的所有的第三方jar包都在里面
找到" compile'com.blankj:utilcode:1.9.8 '"

查看包名,在混淆文件中添加

所有的jar包都依次写上 -keep class "jar包名" ,就ok了
--注意事项--
1.保证实体类不被混淆
2.保证第三方的jar包不被混淆,类似于,友盟,地图,等等,配置的时候,就把混淆文件也过来,免得再回去找
3.添加基础混淆配置,网上有很多的实例

################ 以下直接到 proguard-rules.pro文件中,实体类,第三方部分,需修改####################

热点内容
酷派手机密码是多少 发布:2025-05-10 05:04:17 浏览:971
editpluspython 发布:2025-05-10 04:56:53 浏览:739
linux串口驱动开发 发布:2025-05-10 04:55:37 浏览:596
游戏版微信服务器维护中什么意思 发布:2025-05-10 04:54:42 浏览:817
sqlserver连接测试 发布:2025-05-10 04:49:43 浏览:695
中国电信的电视维护密码是多少 发布:2025-05-10 04:36:52 浏览:589
苹果编译器叫什么名字 发布:2025-05-10 04:36:44 浏览:544
怎么给电话配置ip 发布:2025-05-10 04:31:40 浏览:359
java访问网站 发布:2025-05-10 04:31:02 浏览:189
linuxshell命令行 发布:2025-05-10 04:16:12 浏览:751