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.
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