Skip to content

pnfsoftware/jeb-plugin-oat

Repository files navigation

Android OAT Plugin for JEB

This plugin extracts DEX files from compiled OAT files (ELF) that are used by the Android Runtime.

Supports OAT versions 39 to 214 (Nov 2021).

Building from source: adjust the version number and run the build-xxx script.

File Format

OAT HEADER FORMAT: base is version 39, exceptions start in version 45+

(all entries are 32-bit words)
       magic number ('oat\n')
       OAT version ('NNN\0')
       checksum of header
       ISA
       ISA features bitmask
       Dex file count
       OAT Dex Files Offset                          // ADDED in v127+
       offset of executable code section
       interpreter to interpreter bridge offset      // REMOVED in v170+
       interpreter to compile code bridge offset     // REMOVED in v170+
       jni dlsym lookup (trampoline) offset
       jni dlsym lookup critical trampoline offset   // ADDED in v180+
       portable imt conflict trampoline offset       // REMOVED in v45+
       portable resolution trampoline offset         // REMOVED in v45+
       portable to interpreter bridge offset         // REMOVED in v45+
       quick generic jni trampoline offset
       quick imt conflict trampoline offset
       quick resolution trampoline offset
       quick to interpreter bridge offset
       nterp trampoline offset                       // ADDED in v190+
       image patch delta                             // REMOVED in v162+
       image file location oat checksum              // BECOMES "boot image checksum" in v164+ / REMOVED in v166+
       image file location oat data begin            // REMOVED in v162+
       key value store length
*      key value store - hold some info about compilation
(start of dex headers)
       dex file location size
*      dex file location path string
       dex file location checksum
       dex file pointer from start of oatdata