C++¶
Utilities¶
- bool LIEF::OAT::is_oat(const LIEF::ELF::Binary &elf_binary)¶
Check if the given LIEF::ELF::Binary is an OAT one.
- bool LIEF::OAT::is_oat(const std::string &file)¶
Check if the given file is an OAT one.
- bool LIEF::OAT::is_oat(const std::vector<uint8_t> &raw)¶
Check if the given raw data is an OAT one.
- oat_version_t LIEF::OAT::version(const LIEF::ELF::Binary &elf_binary)¶
Return the OAT version of the given LIEF::ELF::Binary.
- oat_version_t LIEF::OAT::version(const std::string &file)¶
Return the OAT version of the given file.
- oat_version_t LIEF::OAT::version(const std::vector<uint8_t> &raw)¶
Return the OAT version of the raw data.
- LIEF::Android::ANDROID_VERSIONS LIEF::OAT::android_version(oat_version_t version)¶
Return the ANDROID_VERSIONS associated with the given OAT version.
Parser¶
- class Parser : public LIEF::ELF::Parser¶
Class to parse an OAT file to produce an OAT::Binary.
Binary¶
- class Binary : public LIEF::ELF::Binary¶
Public Types
- using it_dex_files = ref_iterator<dex_files_t&, DEX::File*>¶
- using it_const_dex_files = const_ref_iterator<const dex_files_t&, const DEX::File*>¶
- using it_classes = ref_iterator<classes_list_t&, Class*>¶
- using it_const_classes = const_ref_iterator<const classes_list_t&, const Class*>¶
- using it_oat_dex_files = ref_iterator<oat_dex_files_t&, DexFile*>¶
- using it_const_oat_dex_files = const_ref_iterator<const oat_dex_files_t&, const DexFile*>¶
- using it_methods = ref_iterator<methods_t&, Method*>¶
- using it_const_methods = const_ref_iterator<const methods_t&, const Method*>¶
Public Functions
- it_dex_files dex_files()¶
Iterator over LIEF::DEX::File.
- it_const_dex_files dex_files() const¶
- it_oat_dex_files oat_dex_files()¶
Iterator over LIEF::OAT::DexFile.
- it_const_oat_dex_files oat_dex_files() const¶
- it_const_classes classes() const¶
Iterator over LIEF::OAT::Class.
- it_classes classes()¶
- bool has_class(const std::string &class_name) const¶
Check if the current OAT has the given class.
- const Class *get_class(const std::string &class_name) const¶
Return the LIEF::OAT::Class with the given name or a nullptr if the class can’t be found.
- const Class *get_class(size_t index) const¶
Return the LIEF::OAT::Class at the given index or a nullptr if it does not exist.
- it_const_methods methods() const¶
Iterator over LIEF::OAT::Method.
- it_methods methods()¶
- dex2dex_info_t dex2dex_info() const¶
- std::string dex2dex_json_info()¶
- inline bool has_vdex() const¶
- ~Binary() override¶
- using it_dex_files = ref_iterator<dex_files_t&, DEX::File*>¶
Header¶
- class Header : public LIEF::Object¶
Public Types
- using magic_t = std::array<uint8_t, 4>¶
- using key_values_t = std::map<HEADER_KEYS, std::string>¶
- using it_key_values_t = ref_iterator<std::vector<element_t>>¶
- using it_const_key_values_t = const_ref_iterator<std::vector<element_t>>¶
- using keys_t = std::vector<HEADER_KEYS>¶
Iterator type over.
- using values_t = std::vector<std::string>¶
Public Functions
- Header()¶
- oat_version_t version() const¶
OAT version.
- uint32_t checksum() const¶
- INSTRUCTION_SETS instruction_set() const¶
- uint32_t nb_dex_files() const¶
- uint32_t oat_dex_files_offset() const¶
- uint32_t executable_offset() const¶
- uint32_t i2i_bridge_offset() const¶
- uint32_t i2c_code_bridge_offset() const¶
- uint32_t jni_dlsym_lookup_offset() const¶
- uint32_t quick_generic_jni_trampoline_offset() const¶
- uint32_t quick_imt_conflict_trampoline_offset() const¶
- uint32_t quick_resolution_trampoline_offset() const¶
- uint32_t quick_to_interpreter_bridge_offset() const¶
- int32_t image_patch_delta() const¶
- uint32_t image_file_location_oat_checksum() const¶
- uint32_t image_file_location_oat_data_begin() const¶
- uint32_t key_value_size() const¶
- it_key_values_t key_values()¶
- it_const_key_values_t key_values() const¶
- const std::string *get(HEADER_KEYS key) const¶
- std::string *get(HEADER_KEYS key)¶
- Header &set(HEADER_KEYS key, const std::string &value)¶
- const std::string *operator[](HEADER_KEYS key) const¶
- std::string *operator[](HEADER_KEYS key)¶
- virtual void accept(Visitor &visitor) const override¶
Public Static Functions
- static std::string key_to_string(HEADER_KEYS key)¶
Return the string value associated with the given key.
- struct element_t¶
Public Functions
- inline element_t(HEADER_KEYS key, const std::string &value)¶
- inline element_t(HEADER_KEYS key, const std::string &value)¶
- using magic_t = std::array<uint8_t, 4>¶
DexFile¶
- class DexFile : public LIEF::Object¶
Public Functions
- DexFile()¶
- std::string_view location() const¶
- uint32_t checksum() const¶
- uint32_t dex_offset() const¶
- bool has_dex_file() const¶
- void location(const std::string &location)¶
- void checksum(uint32_t checksum)¶
- void dex_offset(uint32_t dex_offset)¶
- const std::vector<uint32_t> &classes_offsets() const¶
- uint32_t lookup_table_offset() const¶
- void class_offsets_offset(uint32_t offset)¶
- void lookup_table_offset(uint32_t offset)¶
- virtual void accept(Visitor &visitor) const override¶
- ~DexFile() override¶
- DexFile()¶
Class¶
- class Class : public LIEF::Object¶
Public Types
- using it_methods = ref_iterator<methods_t&>¶
- using it_const_methods = const_ref_iterator<const methods_t&>¶
Public Functions
- Class()¶
- Class(OAT_CLASS_STATUS status, OAT_CLASS_TYPES type, DEX::Class *dex_class, std::vector<uint32_t> bitmap = {})¶
- bool has_dex_class() const¶
- OAT_CLASS_STATUS status() const¶
- OAT_CLASS_TYPES type() const¶
- std::string_view fullname() const¶
- size_t index() const¶
- it_methods methods()¶
- it_const_methods methods() const¶
- const std::vector<uint32_t> &bitmap() const¶
- bool is_quickened(uint32_t relative_index) const¶
- uint32_t method_offsets_index(uint32_t relative_index) const¶
- uint32_t relative_index(uint32_t method_absolute_index) const¶
- DEX::dex2dex_class_info_t dex2dex_info() const¶
- virtual void accept(Visitor &visitor) const override¶
- ~Class() override¶
- using it_methods = ref_iterator<methods_t&>¶
Method¶
- class Method : public LIEF::Object¶
Public Types
- using quick_code_t = std::vector<uint8_t>¶
Container for the Quick Code.
Public Functions
- Method()¶
- bool has_dex_method() const¶
Check if a LIEF::DEX::Method is associated with this Method.
- const DEX::Method *dex_method() const¶
LIEF::DEX::Method associated (if any).
- bool is_dex2dex_optimized() const¶
True if the optimization is DEX.
- bool is_compiled() const¶
- const DEX::dex2dex_method_info_t &dex2dex_info() const¶
- const quick_code_t &quick_code() const¶
Quick code associated with the method.
- void quick_code(const quick_code_t &code)¶
- virtual void accept(Visitor &visitor) const override¶
- ~Method() override¶
- using quick_code_t = std::vector<uint8_t>¶
Enums¶
OAT Class types¶
OAT Class Status¶
- enum LIEF::OAT::OAT_CLASS_STATUS¶
Values:
- enumerator STATUS_RETIRED = -2¶
- enumerator STATUS_ERROR = -1¶
- enumerator STATUS_NOTREADY = 0¶
- enumerator STATUS_IDX = 1¶
- enumerator STATUS_LOADED = 2¶
- enumerator STATUS_RESOLVING = 3¶
- enumerator STATUS_RESOLVED = 4¶
- enumerator STATUS_VERIFYING = 5¶
- enumerator STATUS_RETRY_VERIFICATION_AT_RUNTIME = 6¶
- enumerator STATUS_VERIFYING_AT_RUNTIME = 7¶
- enumerator STATUS_VERIFIED = 8¶
- enumerator STATUS_INITIALIZING = 9¶
- enumerator STATUS_INITIALIZED = 10¶
- enumerator STATUS_RETIRED = -2¶
Header Keys¶
- enum LIEF::OAT::HEADER_KEYS¶
Values:
- enumerator KEY_IMAGE_LOCATION = 0¶
- enumerator KEY_DEX2OAT_CMD_LINE = 1¶
- enumerator KEY_DEX2OAT_HOST = 2¶
- enumerator KEY_PIC = 3¶
- enumerator KEY_HAS_PATCH_INFO = 4¶
- enumerator KEY_DEBUGGABLE = 5¶
- enumerator KEY_NATIVE_DEBUGGABLE = 6¶
- enumerator KEY_COMPILER_FILTER = 7¶
- enumerator KEY_CLASS_PATH = 8¶
- enumerator KEY_BOOT_CLASS_PATH = 9¶
- enumerator KEY_CONCURRENT_COPYING = 10¶
- enumerator KE_COMPILATION_REASON = 11¶
- enumerator KEY_IMAGE_LOCATION = 0¶