我已经阅读了PE 和 COFF 规范、Matt Pietrek 的“PE 内部窥探:Win32 可移植可执行文件格式之旅”和“Win32 可移植可执行文件格式的深入研究”以及其他几个关于该主题的资料.
我能够从 MinGW GCC 4.7 生成的目标文件中读出 COFF 部分表和 COFF 符号表(我在调试模式下编译静态库)。
我的最终目标是访问给定目标文件 (COFF) 中定义的所有函数,并读出构成其机器代码的所有字节。
问题一:如何计算COFF文件中单个函数的起始地址?我想我必须以某种方式使用符号记录的“值”字段作为“SectionNumber”指定的部分的偏移量。
问题 2:如何找出任何给定函数的长度(我必须读取多少字节)?
问题3:根据微软的PE&COFF规范,在每条定义函数的符号记录之后应该有一个辅助符号表记录。为什么在我的三个已定义函数的目标文件(从以调试模式编译的 .a 文件中提取)中只有一个具有这样的辅助记录?那也完全被零填满了?