使用apktool对apk文件进行反编译,
命令是:
apktool d test.apk
对test.apk进行解压,得到一些图片和classes.dex文件
然后使用dex2jar对classes.dex文件进行反编译,
dex2jar classes.dex
或者
d2j-dex2jar classes.dex
得到.jar文件,然后使用jd-guid.exe工具对jar文件进行查看
apk编译代码混淆
对android项目中的project.properties该文件的
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
这句话取消注释
然后编译android项目即可对android项目的代码混淆
所有的类名和方法名都会被改变成a,b,c,d,e,f,g,h,i,j,k,m,l等等的名称,使得不怀好意的人们对代码查看分析加大了难度
apk部分方法防止反编译
反编译要求我们的android项目代码没有写错的,运行不会抛异常的情况下,反编译工具对apk文件可以有效的反编译,但是如果我们项目中故意出现运行会出错的代码,那么在反编译的时候这个类,或者这个方法,就不可以被有效的反编译,并且反编译完后,出错了
}
代码
void showMessage() {
switch (0) {
case 1001:
String dateString = null;
boolean isClose = false;
JSONObject jsonObject;
try {
jsonObject = new JSONObject("");
dateString = jsonObject.getString("data");
isClose = jsonObject.getBoolean("isClose");
} catch (JSONException e) {
e.printStackTrace();
}
TTT.set(null, "", dateString);
break;
}
}
class TTT {
public static void set(Context context, String key, String value) {
}
}