testwhat / SmaliEx

A wrapper to get de-optimized dex from odex/oat/vdex.
529 stars 142 forks source link

Failed to get "dex" from "framework/boot-*.oat" files on android N #43

Closed JohnPriv closed 7 years ago

JohnPriv commented 7 years ago

@testwhat I tried the latest release to deodex android N but it failed especially during use command: oat2dex boot framework/arm64 also tried single file and the same problem it gets the raw dex file but failed on the really dex file the rom is for Nexus 6 I used the latest version that compiled including baksmali 2.2b3

10-07 17:32:56:802 Output raw dex: D:\framework\arm64-odex\apache-xml.dex 10-07 17:32:56:810 Output raw dex: D:\framework\arm64-odex\bouncycastle.dex 10-07 17:32:56:816 Output raw dex: D:\framework\arm64-odex\conscrypt.dex 10-07 17:32:56:822 Output raw dex: D:\framework\arm64-odex\core-junit.dex 10-07 17:32:56:830 Output raw dex: D:\framework\arm64-odex\core-libart.dex 10-07 17:32:56:837 Output raw dex: D:\framework\arm64-odex\ext.dex 10-07 17:32:56:851 Output raw dex: D:\framework\arm64-odex\framework.dex 10-07 17:32:56:860 Output raw dex: D:\framework\arm64-odex\framework-classes2.dex 10-07 17:32:56:866 Output raw dex: D:\framework\arm64-odex\ims-common.dex 10-07 17:32:56:875 Output raw dex: D:\framework\arm64-odex\okhttp.dex 10-07 17:32:56:882 Output raw dex: D:\framework\arm64-odex\org.apache.http.legacy.boot.dex 10-07 17:32:56:890 Output raw dex: D:\framework\arm64-odex\telephony-common.dex 10-07 17:32:56:896 Output raw dex: D:\framework\arm64-odex\voip-common.dex 10-07 17:32:56:905 Output raw dex: D:\framework\arm64-odex\core-oj.dex 10-07 17:32:57:128 Art version=79 (D:\framework\arm64\boot-apache-xml.oat) 10-07 17:32:57:130 De-optimizing /system/framework/apache-xml.jar

addred# public abstract java.lang.String toString()

addred# public default java.util.Spliterator spliterator()

addred# public abstract int hashCode()

10-07 17:33:22:017 Analysis error in class=Lorg/apache/xalan/transformer/TransformerImpl; method=transform Method: Lorg/apache/xalan/transformer/TransformerImpl;->transform(Ljavax/xml/transform/Source;Z)V Near line: 571 (address 98) Instructions: [44] invoke-virtual-quick regC=4 [45] move-result-object regA=4 [46] invoke-virtual-quick regC=3 regD=4 <----- [47] move-result-object regA=3 [48] invoke-virtual-quick regC=3 10-07 17:33:22:018 org.jf.dexlib2.analysis.AnalysisException: Could not resolve the method in class unknown at index 78, objReg=3 at org.jf.dexlib2.analysis.MethodAnalyzer.analyzeInvokeVirtualQuick(MethodAnalyzer.java:2590) at org.jf.dexlib2.analysis.MethodAnalyzer.analyzeInstruction(MethodAnalyzer.java:1257) at org.jf.dexlib2.analysis.MethodAnalyzer.analyze(MethodAnalyzer.java:258) at org.jf.dexlib2.analysis.MethodAnalyzer.(MethodAnalyzer.java:189) at org.rh.smaliex.DexUtil$ODexRewriterModule$1$1.getInstructions(DexUtil.java:422) ...(Skip 24 traces) at org.rh.smaliex.OatUtil.convertToDex(OatUtil.java:314) at org.rh.smaliex.OatUtil.convertDexFromBootOat(OatUtil.java:239) at org.rh.smaliex.OatUtil.bootOat2Dex(OatUtil.java:127) at org.rh.smaliex.Main.mainImpl(Main.java:101) at org.rh.smaliex.Main.main(Main.java:42) 10-07 17:33:22:018 Failed to re-construct dex java.lang.ClassCastException: org.jf.dexlib2.analysis.UnresolvedOdexInstruction cannot be cast to org.jf.dexlib2.iface.instruction.formats.Instruction35ms 10-07 17:33:22:018 convertToDex: skip /system/framework/apache-xml.jar

the error log listed is for one oat only and all the rest are the same error Note: using smali & baksmali 2.2b3 manually works fine!! Any help please?

testwhat commented 7 years ago

From the log, it should not be the latest version. Try https://github.com/testwhat/SmaliEx/releases/tag/snapshot-s

JohnPriv commented 7 years ago

Thank you and sorry for my wrong it works now