0

我正在使用 gdb-python 提取和执行 C 结构布局。

我设法获取所有字段、偏移量、类型和大小。

尽管如此,当尝试重新生成结构的代码时,我没有任何迹象表明它是否标有 GCC 的attribute((__packed__)).

有没有办法从可执行文件中获取这些信息?(最好使用 gdb-python,但任何其他方式也可以)

4

1 回答 1

1

有没有办法从可执行文件中获取这些信息?

不,但是您应该能够通过简单的启发式推断出这一点:

  • 如果sizeof(struct foo)大于其成员字段大小的总和,则不打包该结构。
  • 如果sizeof(struct foo)等于其成员字段大小的总和,则结构要么被打包,要么其成员自然对齐而没有孔,并且打包对它无关紧要。
于 2018-12-12T17:55:52.407 回答