据我了解,Microsoft的PortableExecutable格式的COFF符号表用于存储导出、导入和调试符号。但是既然我们已经有了.edata、.idata和.debug部分,为什么我们还需要另一个这样的结构呢? 最佳答案 参见此处:http://msdn.microsoft.com/en-us/library/ms809762.aspx[COFF符号表]仅用于带有COFF调试信息的OBJ文件和PE文件。"“.rdata部分至少用于两件事。[...](在TLINK32EXE中,调试目录位于名为.debug的部分中。)[...]
在Windows上,一些二进制文件,例如.obj为COFF格式,其他如.exe和.dll是PE,是COFF,多了一个header。看来您需要查看文件扩展名才能知道期望的是什么。是否有关于哪些文件扩展名使用COFF哪些文件扩展名使用PE的完整列表? 最佳答案 没有“哪些文件扩展名使用COFF哪些文件扩展名使用PE的完整列表”。扩展仅用于帮助系统“映射”将用于启动所选文件的应用程序(例如,*.jpg将映射为由MSPAINT.exe启动,*.doc将映射为启动通过MSWORD.EXE...等)。这种逻辑映射是通过注册表进行的。Micros
在十六进制编辑器中查看PE文件时,我经常遇到节表和第一节之间的一些字节,这对我来说真的没有意义。就我而言,应该有一个00字节的填充以适合对齐。然而,这里有一个截屏,展示了相反的情况:事实证明,突出显示的block几乎就是绑定(bind)的导入表。但我仍然很困惑。为什么这张表不在一个部分?情况总是如此还是只是某个编译器/链接器的规范?我没有找到有关此特定问题的任何文档。人们可以找到的关于这个主题的所有内容基本上都是这样说的:DOSMZ标题DOSstubPEheader分区表第1部分第2部分第3部分...等等在我遇到这个问题之前,我什至没有意识到这些部分之外可能还有一些东西(当然除了我上面
Microsoft的PE/COFF文档提到符号表中的类型字段:“最高有效字节指定该符号是指向LSB中指定的基类型的指针、函数返回还是数组。Microsoft工具仅使用此字段来指示该符号是否为函数,因此类型字段的唯一两个结果值是0x0和0x20。”但是,文档和winnt.h都指定IMAGE_SYM_DTYPE_FUNCTION=2,而不是0x20。即使这被认为是MSB的值,也会给出整个字段的值0x200,而不是0x20。我错过了什么? 最佳答案 检查winnt.h中的以下几行://typepackingconstants#define
有什么方法可以将COFF库(lib文件)转换为OMF库以便与C++Builder6一起使用?这个coff不仅仅是导入库,它包含一些代码。当我尝试使用borland的coff2omf.exe转换它时,我从15KB的文件中得到了1KB的文件。 最佳答案 您可以使用http://agner.org/optimize提供的对象文件转换器,而不是DigitalMars转换器。ThisutilitycanbeusedforconvertingobjectfilesbetweenCOFF/PE,OMF,ELFandMach-Oformatsfor
之后我安装了VS2012我的Qt项目不再编译(我的电脑上有VS2010和VS2012)。消息:LNK1123:转换为COFF期间失败:文件无效或损坏。以前只用VS2010没问题。对于VS2012环境,建议(参见SOhere):使用EnableIncrementalLinkingNO编译卸载.net4.5因为我没有将Qt与VS2012结合使用(所以没有插件),所以我不能setuptheprojectasmentioned.我也不能卸载.net4.5(另一个项目需要)。有机会解决这个问题吗?我有一些相关的问题是否可以针对VS2012C++编译器进行编译?Hereitsays为此,我需要自己
我正在研究PE解析器,遇到了一些非常不寻常的事情。PE格式中目录的名称和顺序似乎因您查看的位置而异:来自PEReader(perdr):#defineIMAGE_DIRECTORY_ENTRY_EXPORT0//ExportDirectory#defineIMAGE_DIRECTORY_ENTRY_IMPORT1//ImportDirectory#defineIMAGE_DIRECTORY_ENTRY_RESOURCE2//ResourceDirectory#defineIMAGE_DIRECTORY_ENTRY_EXCEPTION3//ExceptionDirectory#defin
因为同一个电脑上安装多个VS,有多个cvtres.exe。按照下面的操作如果还是不行就在C盘搜索cvtres.exe,然后挨个重命名,看看是调用的哪个,然后修改就可以了。用VS2010编译C++项目时出现这样的错误:LNK1123:转换到COFF期间失败:文件无效或损坏 解决方法:1、搜索C盘下的cvtres.exe,结果得到类似这样的列表:C:\ProgramFiles\MicrosoftVisualStudio10.0\VC\binC:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7601.17514
我只知道2:dumpbin包含在VisualStudio中PE查看自http://wjradburn.com/software/ 最佳答案 有DbgHelp,但它更适合PE文件而不是目标文件。它旨在用作API而不是工具。COFF格式本身起源于unixhttps://en.wikipedia.org/wiki/COFF尽管Microsoft对该格式进行了一些扩展,而unix似乎已经放弃了该格式以支持ELF。但是您可能会在Unix世界中找到一些有用的工具,例如来自SCO的转储工具http://docsrv.sco.com:507/en/
是否可以在UNIX上运行COFF可执行文件或在Windows上运行ELF可执行文件?能够在Windows和UNIX上运行任一文件类型的步骤是什么。我只是好奇。 最佳答案 要正确回答您的问题,需要回顾什么是ELF、COFF和PE。这些二进制格式本质上只是向操作系统提供有关如何执行文件中包含的原始CPU指令的指示的容器。它们非常类似于MKV、WMV和OGG等音频/视频容器。操作系统是否支持可执行格式。直到最近,MicrosoftWindows一直不支持COFF或ELF。在Windows10中,微软通过内置到Windows内核UserMo