Skip to content

Trying to oat2dex on a Nougat oat #61

@newobj

Description

@newobj

I have boot-framework.oat from a 7.1.0 image which I'm trying to convert to dex via:

java -jar oat2dex.jar -a 24 -o out-7 boot boot-framework.oat

And get this:

Method: Landroid/accessibilityservice/AccessibilityService$1;-><init>(Landroid/accessibilityservice/AccessibilityService;ZLandroid/accessibilityservice/AccessibilityService$GestureResultCallbackInfo;)V
Near line: -1 (address 2)
Instructions:
 [0] iput-object-quick regA=1 regB=0
 [1] iput-boolean-quick regA=2 regB=0 <-----
 [2] iput-object-quick regA=3 regB=0
 [3] invoke-direct regC=0

07-05 12:19:49:180 org.jf.dexlib2.analysis.AnalysisException: Could not resolve the field in class (UninitThis,Landroid/accessibilityservice/AccessibilityService$1;) at offset 16 in <init>
  at org.jf.dexlib2.analysis.MethodAnalyzer.analyzeIputIgetQuick(MethodAnalyzer.java:2422)
  at org.jf.dexlib2.analysis.MethodAnalyzer.analyzeInstruction(MethodAnalyzer.java:1269)
  at org.jf.dexlib2.analysis.MethodAnalyzer.analyze(MethodAnalyzer.java:259)
  at org.jf.dexlib2.analysis.MethodAnalyzer.<init>(MethodAnalyzer.java:190)
  at org.rh.smaliex.deopt.OdexRewriter$OdexRewriterModule$1$1.getInstructions(OdexRewriter.java:233)
  ...(Skip 24 traces)
  at org.rh.smaliex.OatUtil.convertToDex(OatUtil.java:271)
  at org.rh.smaliex.OatUtil.convertDexFromBootOat(OatUtil.java:192)
  at org.rh.smaliex.OatUtil.bootOat2Dex(OatUtil.java:75)
  at org.rh.smaliex.Main.mainImpl(Main.java:108)
  at org.rh.smaliex.Main.main(Main.java:45)

07-05 12:19:49:180 Failed to re-construct dex java.lang.ClassCastException: org.jf.dexlib2.analysis.UnresolvedOdexInstruction cannot be cast to org.jf.dexlib2.iface.instruction.formats.Instruction22cs
07-05 12:19:49:180 convertToDex: skip /system/framework/framework.jar
07-05 12:19:49:180 De-optimizing /system/framework/framework.jar:classes2.dex
07-05 12:19:49:367 Analysis error in class=Landroid/telephony/TelephonyHistogram; method=<init>
Method: Landroid/telephony/TelephonyHistogram;-><init>(III)V
Near line: 86 (address 23)
Instructions:
 [9] iput-quick regA=4 regB=2
 [10] const regA=0
 [11] iput-quick regA=0 regB=2 <-----
 [12] iput-quick regA=1 regB=2
 [13] iput-quick regA=1 regB=2

07-05 12:19:49:367 org.jf.dexlib2.analysis.AnalysisException: Could not resolve the field in class (Reference,Landroid/telephony/TelephonyHistogram;) at offset 40 in <init>
  at org.jf.dexlib2.analysis.MethodAnalyzer.analyzeIputIgetQuick(MethodAnalyzer.java:2422)
  at org.jf.dexlib2.analysis.MethodAnalyzer.analyzeInstruction(MethodAnalyzer.java:1269)
  at org.jf.dexlib2.analysis.MethodAnalyzer.analyze(MethodAnalyzer.java:259)
  at org.jf.dexlib2.analysis.MethodAnalyzer.<init>(MethodAnalyzer.java:190)
  at org.rh.smaliex.deopt.OdexRewriter$OdexRewriterModule$1$1.getInstructions(OdexRewriter.java:233)
  ...(Skip 24 traces)
  at org.rh.smaliex.OatUtil.convertToDex(OatUtil.java:271)
  at org.rh.smaliex.OatUtil.convertDexFromBootOat(OatUtil.java:192)
  at org.rh.smaliex.OatUtil.bootOat2Dex(OatUtil.java:75)
  at org.rh.smaliex.Main.mainImpl(Main.java:108)
  at org.rh.smaliex.Main.main(Main.java:45)

07-05 12:19:49:368 Failed to re-construct dex java.lang.ClassCastException: org.jf.dexlib2.analysis.UnresolvedOdexInstruction cannot be cast to org.jf.dexlib2.iface.instruction.formats.Instruction22cs
07-05 12:19:49:368 convertToDex: skip /system/framework/framework.jar:classes2.dex

I'm sure I'm just doing something wrong, but I don't understand the right commands I need, or if supplemental files from the device are needed, to make this work. Can anyone help?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions