【问题标题】:Dalvik reengineering , structure of .dex filesDalvik 再造,.dex 文件的结构
【发布时间】:2012-11-26 11:56:03
【问题描述】:

我正在尝试分析已编译的 Dalvik 代码,但我发现了一个问题。这是 .dex 格式的specification。我可以获取文件的标题,但我不明白接下来会发生什么 - 当我使用 dexdump 时,我在标题旁边有类:

class_defs_off      : 61836 (0x00f18c)
data_size           : 368612
data_off            : 72312 (0x011a78)
Class #0 header:
class_idx           : 62
access_flags        : 1536 (0x0600)

但是当我查看我的字节码时,还有其他东西。我不明白标题旁边会发生什么。根据规范,它是string_idi's,但我不确定。 .dex文件的真正结构是什么?

【问题讨论】:

    标签: android reverse-engineering dalvik


    【解决方案1】:

    Baksmali 可以转储现有 dex 文件的上下文,格式类似于 dx 的十六进制转储。 (优点是可以dump现有的dex文件)

    baksmali classes.dex -D out.dump

    【讨论】:

    • 啊,是的,我应该知道 baksmali 可以选择。
    • 顺便说一句,dx 现在不知道如何读取 dex 文件吗?如果是这样,它可能能够转储现有的 dex 文件(或至少几乎如此)。
    • 嗯,是的。我认为为 dex 文件合并内容添加了对读取的支持,尽管它看起来不能转储现有的 dex 文件(还)。不过,这将是一个不错的功能,我将不得不对其进行研究:)
    【解决方案2】:

    您所指的规范实际上确实准确地描述了 dex 文件的结构。 (注意:我写了那个文件。)

    dexdump 不会按顺序输出 dex 文件的全部内容,这解释了您的一些困惑。 dx 工具在生成 dex 文件时可以输出带注释的 dex 文件内容列表。您可能会发现这很有用。抱歉,我不记得这些选项,但它会类似于 --dex --dump-to=file.txt --dump-bytes

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2014-09-16
      • 2014-09-23
      • 2017-04-01
      相关资源
      最近更新 更多