我正在尝试解析文件dex,我已经编写了Java代码来获取有关以下信息:
项目清单
标头
string_ids
type_ids
proto_ids
field_ids
method_ids
class_defs
只需根据各个字段的大小进行字节移位。
现在,我想获取字节码,然后获取源代码,相关的dex文件。
也许可以在“ code_item”结构中找到此信息?
如果是这样,我在什么时候可以读取内存块。
提前致谢!
最佳答案
您可能会看到dexlib2 library项目中的smali/baksmali。它提供了易于使用的api,用于访问dex文件中的信息。
示例代码:
DexFile dexFile = DexFileFactory.loadDexFile("blah.dex", 15);
for (ClassDef classDef: dexFile.getClasses()) {
for (Method method: classDef.getMethods()) {
MethodImplementation impl = method.getImplementation();
if (impl != null) {
for (Instruction instruction: impl.getInstructions()) {
// process instruction as needed...
}
}
}
}