luoyesiqiu/DexRepair

没懂这个工具是否有实际用途.

super-keys opened this issue · 4 comments

如题,
我用运行:java -jar DexRepair.jar --log E:\linuxData\dex\6369608_7144.dex E:\linuxData\dex\6369608_7144_all.bin > dex.log
得到*repair.dex与原来的dexmd5是一样的. 请问这个工具只是copy原来的内容填充吗?

image

请指教, 是否我使用方式有问题.谢谢 (附件是7z的, 请改名)
dex.7z.zip

感谢反馈。你提供的dex codeitem完整,但缺少magic,所以修复后会得到一个和修复前一样的dex。刚提交的代码已支持magic填充,请重新尝试

谢谢, 我发现我的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]);
            }
        }
    }
}

`

看起来我们的代码作用是一样的, 但大佬的代码更加简洁. 传入的*.bin文件没有看到对原dex有任何影响.为什么呢?

看起来我们的代码作用是一样的, 但大佬的代码更加简洁. 传入的*.bin文件没有看到对原dex有任何影响.为什么呢?

因为被修复的dex的codeitem没有缺失,所以修复了没影响