我正在尝试解析文件 dex,我已经编写了 Java 代码来获取以下信息:
- 列出项目
- 标题
- 字符串ID
- 类型 ID
- proto_ids
- field_ids
- method_ids
- 类定义
简单地根据各个字段的大小进行字节移位。
现在我想获取字节码,然后获取源代码,即相关的 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...
}
}
}
}
关于java - 用于字节码检索的解析器 dex 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19904724/