我正在尝试解析文件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...
      }
    }
  }
}

07-27 17:18