解析器字节码的解析器dex文件

时间:2013-11-11 11:03:16

标签: java android parsing bytecode dex

我正在尝试解析文件dex,我编写了Java代码来获取有关的信息:

  • 列表项
  • string_ids
  • type_ids
  • proto_ids
  • field_ids
  • method_ids
  • class_defs

只需根据各个字段的大小进行字节移位。

现在我想得到字节码然后是源代码,有问题的dex文件。 也许这个信息可以在“code_item”结构中找到? 如果是这样,我在什么时候阻止内存才能读取它。

提前致谢!

1 个答案:

答案 0 :(得分:2)

您可以查看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...
      }
    }
  }
}