没懂这个工具是否有实际用途.
super-keys opened this issue · 4 comments
super-keys commented
如题,
我用运行:java -jar DexRepair.jar --log E:\linuxData\dex\6369608_7144.dex E:\linuxData\dex\6369608_7144_all.bin > dex.log
得到*repair.dex与原来的dexmd5是一样的. 请问这个工具只是copy原来的内容填充吗?
请指教, 是否我使用方式有问题.谢谢 (附件是7z的, 请改名)
dex.7z.zip
luoyesiqiu commented
感谢反馈。你提供的dex codeitem完整,但缺少magic,所以修复后会得到一个和修复前一样的dex。刚提交的代码已支持magic填充,请重新尝试
super-keys commented
谢谢, 我发现我的dex 缺少了head头部信息, 所以我在你的代码基础上加了个fun 用来增加头部信息
`
//copy dex
byte[] dexData = IoUtils.readFile(dexFile);
repairDexHead(dexData, outputLog);//简单的path
省略...
private static byte[] dexHead = {100, 101, 120, 10, 48, 51, 53, 0};
private static void repairDexHead(byte[] dexData, boolean outputLog) {
for (int i = 0; i < 7; i++) {
if (dexData[i] == 0) {
dexData[i] = dexHead[i];
if (outputLog) {
System.out.printf("Patch dex head : %s ", dexData[i]);
}
}
}
}
`
super-keys commented
看起来我们的代码作用是一样的, 但大佬的代码更加简洁. 传入的*.bin文件没有看到对原dex有任何影响.为什么呢?
luoyesiqiu commented
看起来我们的代码作用是一样的, 但大佬的代码更加简洁. 传入的*.bin文件没有看到对原dex有任何影响.为什么呢?
因为被修复的dex的codeitem没有缺失,所以修复了没影响