windows - 可执行文件中的 RTTI 元数据存储在哪里?

标签 windows delphi portable-executable rtti

我正在查看 RTTI 的文档其中说:

If RTTI generation is enabled, the resulting binary includes special metadata that contains information about types (for example, class ancestry, declared fields, annotated attributes).

RTTI 元数据存储在 PE 文件中的什么位置,它具有什么结构?

最佳答案

Windows PE 文件没有存储 RTTI 的标准部分,其格式和存储位置完全取决于编译器供应商。

即使它没有指定存储格式(仅指定内存布局)Itanium C++ ABI specification是一个很好的起点,如果您想了解更多信息,可以继续阅读 GCC 源代码。 This answer显示 GCC v3+ 在除 Windows 之外的任何地方都使用此 ABI,我猜他们会尝试遵循 Microsoft 格式。

具体细节应该无关紧要,因为编译器可以随时更改其实现,如果您想与其 RTTI 数据交互,则必须调查特定版本。

有关 Delphi 的特定信息,可能值得查看 Free Pascal code但我不知道它们是否完全兼容 ABI。

关于windows - 可执行文件中的 RTTI 元数据存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46216509/

相关文章:

windows - 通过 Cron 问题的 CakePHP 控制台

arrays - 将动态数组类型分配给 TArray<T> 变量

c - 在 PE 文件中查找 .text 部分的原始偏移量

c - 检测 PE 的 'on-the-wire'

windows - WinDbg 中的 Python Clik 模块

windows - 如何在 WinDBg 中启用内核跟踪

delphi - 自定义属性编辑器 - 它们似乎从未出现

c++ - 如何在 C 中读取导入目录表

windows - 使用 Windows 批处理脚本保护 FTP

delphi - 如何在不更新图标的情况下更改快捷方式路径?