将odex文件转换为dex文件

时间:2016-04-28 08:19:45

标签: android dex smali

我想将odex文件转换为dex文件。我已经从系统中删除了框架文件夹。我试过" java -jar baksmali-2.1.2.jar -d system / framework -x temp.odex"命令,但产生了错误 - 错误信息如下所示。

 Error occurred while loading boot class path files. Aborting. org.jf.util.ExceptionWithContext: Cannot locate boot class path file /system/framework/core.jar
        at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPath.java:277)
        at org.jf.dexlib2.analysis.ClassPath.fromClassPath(ClassPath.java:182)
        at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:67)
        at org.jf.baksmali.main.run(main.java:113)
        at org.jf.baksmali.main.main(main.java:322)

我找不到" core.jar"在我的android系统框架文件夹中。

5 个答案:

答案 0 :(得分:5)

截至2017-06-09 baksmali已发生变化。它的工作原理如下。

java -jar baksmali-2.2.0.jar d SamsungInCallUI.odex -o SamsungInCallUI

然后组装dex文件。

java -jar smali-2.2.0.jar ass SamsungInCallUI -o SamsungInCallUI.dex

答案 1 :(得分:2)

这是@kakopappa答案的扩展。

here获取最新版本的baksmali和smali jar,并将它们放在文件夹中,如果您是mac / linux用户,则将此方法添加到.bash_profile文件中。

在计算机中获取baksmali和smali jar并将其从终端分配给这些变量。

  

BAKSMALI_JAR_PATH =“”

     

SMALI_JAR_PATH =“”

注意:编辑后的值应类似于 BAKSMALI_JAR_PATH =“ /用户/兔子/工具/baksmali-2.2.7.jar” SMALI_JAR_PATH =“ /Users/rabbit/tools/smali-2.2.7.jar”

复制将此脚本粘贴到您的终端中,然后重新启动终端。这是一个快捷功能,将添加到.bash_profile中,您将可以方便使用。

    echo "BAKSMALI_JAR_PATH="$BAKSMALI_JAR_PATH >> ~/.bash_profile
    echo "SMALI_JAR_PATH="$SMALI_JAR_PATH >> ~/.bash_profile
    echo >>
    function odextodex() {
       odex_file_name=$1
       deassembled_file=${odex_file_name%.odex}
       java -jar $BAKSMALI_JAR_PATH d $1 -o $deassembled_file
       java -jar $SMALI_JAR_PATH ass $deassembled_file -o $deassembled_file.dex
       rm -rf $deassembled_file
    }

完成此操作后,键入odextodex filename.odex-您应该在当前目录中看到filename.jar文件。

答案 2 :(得分:1)

请改为尝试:

java -jar baksmali-2.1.2.jar -c boot.oat -d system/framework/arm/boot.oat -x temp.odex

boot.oat的具体路径可能不同。

另请注意,baksmali尚不支持对N预览图像进行解码。

答案 3 :(得分:0)

这对我有用adb pull /system/framework/arm/boot.oat /tmp/framework/boot.oat放置apk和odex文件baksmali.jar -x -c boot.oat -d /tmp/framework APKname.odex -o APKname

答案 4 :(得分:0)

我不确定我是否正确理解了你的问题(如果我错了,请善意纠正我),但是如果你想将odex转换为dex,我已经在这里回答了类似的问题: https://reverseengineering.stackexchange.com/questions/12393/reverse-engineering-android-vendor-system-apps/12406#12406

无论如何,据我所知,你有两个选择:

祝你好运