因为女朋友想要破解某游戏,粗略学习了一下记录一下
工具
dex2jar-2.0 ————反编译class.dex文件为jar包
jd-gui ————查看jar包文件
操作流程
1.把你的apk后缀名改为zip,然后解压后,就会发现有个classes.dex,这里面就是java源码了。
2.找到dex2jar-2.0目录,现在把dex文件拷贝到该目录下。
3.cmd窗口进入dex2jar-2.0目录,然后输入命令:
d2j-dex2jar.bat classes.dex
回车,如下图:
4.完成后我们在dex2jar-2.0目录下就会多了个classes-dex2jar.jar文件,这个就是我们需要的jar文件
5.使用jd-gui工具打开jar包,查看类信息
常见问题
1.not support version
打开dex2jar-2.0\lib目录,将dex-reader-2.0.jar
或者dex-reader-api-2.0.jar
丢进jd-gui工具中看看源码如下:
// 构造方法中找到报错点
public DexFileReader(ByteBuffer in){
......
int version = in.getInt() & 0xFFFFFF;
if ((version != 3486512) && (version != 3552048)) {
throw new DexException("not support version.");
}
skip(in, 32);
......
}
.....
}
// 支持的版本定义
private static final int MAGIC_035 = 3486512;
private static final int MAGIC_036 = 3552048;
意味着dex2jar-2.0工具只支持035和036版本协议!!!
使用notepad++文件浏览工具(任何能打开文件的工具都可以,例如记事本...)打开dex文件,修改版本信息037为036或者035,然后保存文件即可,再使用反编指令
2.代码混淆
反编译出来的代码可能存在代码混淆等加密方法,目前还没有找到解法,希望懂得大佬来教一下