33 static std::unique_ptr<File> parse(
const std::string& file);
34 static std::unique_ptr<File> parse(std::vector<uint8_t> data,
const std::string& name =
"");
41 Parser(
const std::string& file);
42 Parser(std::vector<uint8_t> data);
45 void init(
const std::string& name, art_version_t
version);
47 template<
typename ART_T>
50 template<
typename ART_T>
51 size_t parse_header();
53 template<
typename ART_T,
typename PTR_T>
54 void parse_sections();
56 template<
typename ART_T,
typename PTR_T>
59 template<
typename ART_T,
typename PTR_T>
63 template<
typename ART_T,
typename PTR_T>
64 void parse_objects(
size_t offset,
size_t size);
66 template<
typename ART_T,
typename PTR_T>
67 void parse_art_fields(
size_t offset,
size_t size);
69 template<
typename ART_T,
typename PTR_T>
70 void parse_art_methods(
size_t offset,
size_t size);
72 template<
typename ART_T,
typename PTR_T>
73 void parse_interned_strings(
size_t offset,
size_t size);
76 template<
typename ART_T,
typename PTR_T>
77 void parse_dex_caches(
size_t offset,
size_t size);
80 template<
typename ART_T,
typename PTR_T>
81 void parse_dex_cache(
size_t object_offset);
84 template<
typename ART_T,
typename PTR_T>
85 void parse_class_roots(
size_t offset,
size_t size);
88 template<
typename ART_T,
typename PTR_T>
89 void parse_class(
size_t offset);
92 template<
typename ART_T,
typename PTR_T>
93 void parse_jstring(
size_t offset);
100 std::unique_ptr<File> file_;
101 std::unique_ptr<BinaryStream> stream_;
102 uint32_t imagebase_ = 0;