问题标签 [coff]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
328 浏览

c# - 为什么我没有得到“PE\0\0”?

来自PE规范:

在 location 0x3c,存根具有 PE​​ 签名的文件偏移量。此信息使 Windows 能够正确执行映像文件,即使它具有 MS DOS 存根。此文件偏移量放置在0x3c链接期间的位置。

2.2. 签名(仅图像)
在 MS DOS 存根之后,在 offset 指定的文件偏移处0x3c,是一个 4 字节的签名,将文件标识为 PE 格式的图像文件。这个签名是“PE\0\0”(字母“P”和“E”后跟两个空字节)。

我尝试读取这些字节:

但是marker变量有0x08, 0x01,0x00x0x00字节(第一个和第二个不是PE字符)......为什么我得到这样的结果?

0 投票
1 回答
362 浏览

c++ - 获取部分的符号

我查看了 COFF 的文档,无法理解如何获得节 ( __setdefaultprecision) 的符号,我有指向符号表、字符串表和节数组的指针,但我怎么知道每个部分?任何帮助表示赞赏。

0 投票
1 回答
294 浏览

c++ - 将 COFF 文件的 COMDAT 符号解释为人类可读的函数签名

我想解释 COFF 文件的 COMDAT 符号 COMDAT 符号是

?make@DNameStatusNode@@SAPAV1@W4DNameStatus@@@Z

我怎么能把它解释为

(public: static class DNameStatusNode * __cdecl DNameStatusNode::make(enum DNameStatus))

谢谢。

0 投票
1 回答
1028 浏览

visual-studio - 如何从使用 /GL 编译的 .obj 文件中确定主要编译器版本?

.obj我正在尝试从使用链接时间代码生成选项生成的文件中确定 Visual Studio 版本(2002/2003、2005、2008、2010、2012、2013、2015) 。

我使用 MSVC2012 生成的文件具有以下 COFF 标头内容:

似乎最初的 4 个字节是 00,00,FF,FF 将其标记为 LTCG 对象,接下来的内容是专有的。通常的文件头成员都没有“意义”(也许时间戳没问题,我没有检查)。

如果此标头的任何部分是特定于编译器的,有谁知道?我需要确定的是用于编译对象的 MSVC 主要版本......

似乎有一个版本,编码为<MAJOR:16:LE> 0x80 <MINOR:16:LE>,存储在标题之后不久。例如:

需要的是弄清楚如何通过来自先前数据的偏移量可靠地到达它。

是一个相关的问题,没有解决方案......

0 投票
1 回答
1661 浏览

c++ - 链接器错误“包含无效的 OMF 记录”2

我正在使用 Embarcadero XE8 C++ builder 32 位。

我在我的程序中添加了一个库来解决Unresolved external error.

当我添加库时,我得到了标题中的错误。于是我在网上搜索,在stackoverflow上找到了这个话题: Linker error "contains invalid OMF record"

正如它所说的 COFF2OMF 工具,可以工作。遗憾的是它对我不起作用,我提供了一个 7mb 的库文件,当我使用该工具转换它时它只有 41kb ......所以我猜转换失败了。当我将转换后的文件添加到我的程序时,它只是忽略它并仍然显示unresolved external error.

那么如何让我的库与我的 C++ 构建器一起工作呢?

0 投票
2 回答
3527 浏览

winapi - 导入表、导入地址表、导入名称表有什么区别?

反汇编/转储 exe 时,我在 .idata 导入部分得到三个表:

  • 导入表 (IT)
  • 导入地址表 (IAT)
  • 导入名称表 (INT)

我了解 IAT 和 INT 是什么,但更准确地说是什么?

有人可以提供解释,因为各种 PE 教程令人困惑。我不完全理解他们描述的那些官方结构名称在此特定数据上的映射。

这里的提示/答案会有所帮助

示例 PE 文件部分

0 投票
1 回答
367 浏览

scripting - 对于 package.loadlib,lua 是否要求 dll 为 COFF 格式或 ELF 格式?

我正在尝试将 dll 加载到我的 lua 脚本中并调用该函数。当我使用 GCC(在 cygwin 下)和 lua(5.2.4)创建 dll 时,我能够加载库并毫无问题地执行它。但是,当我使用 Lua 5.1 从 SciTE 创建运行相同的脚本时,dll 加载成功。但是,它不执行。在 dll 中,我试图简单地将两个整数写入文件。

这里有两个问题: 1. 'mylibrary.dll' 应该是什么格式,以便 lua 可以毫无问题地理解和执行 - ELF 或 COFF。2.我可以在linux上运行的lua下运行dll(显然是在windows下构建的)吗?

0 投票
1 回答
431 浏览

c# - 如何在没有 Exe-Container 的情况下创建 C# 可执行文件

我可以使用不使用 microsoft windows exe 文件格式的语言 C# 为 linux 生成可执行文件吗?

我知道 mono 可以从 windows 可执行文件中读取 IL 指令,但我很好奇这是否也可以使用 unix elf 文件(由 gcc 或其他编译器生成的标准可执行文件)。

我仍然想使用单声道(或类似的东西),但不想在我的文件中使用 PE Header。

0 投票
1 回答
3083 浏览

visual-studio-2010 - 如何查看 LIB 文件版本?

重装Visual Studio 2010后,重新编译代码,遇到如下错误:

错误“链接:致命错误 LNK1123:转换为 COFF 期间失败:文件无效或损坏”

一个解决方案提到lib文件不兼容,我需要安装Visual Studio 2010 SP1。我这样做了,现在它已经解决了。

我想知道如何检查 lib 文件是否由 SP1 创建?我尝试了 dumpbin,但在结果中找不到版本。

0 投票
0 回答
1050 浏览

c - 如何使用 gcc-arm-none-eabi 工具链生成与 Proteus 兼容的调试文件

我正在使用基于 ARM7TDMI 的微控制器 LPC2138 开发一个新项目。我已经在 Keil IDE 中为这个微控制器开发了代码。我的目的是在 Linux 主机 PC 中使用 GNU 工具链来试验 ARM 代码开发。所以我正在使用 gcc-arm-none-eabi 工具链。

到目前为止,我已经成功地为 ARM 生成了可执行文件(以及 .hex 文件)。这是我用过的makefile。

我的问题是我需要调试(逐步执行)Proteus(ISIS)中的可执行文件。但 Proteus 仅支持 .coff 和 .elf 格式的可执行文件。

我知道 gcc 默认会生成 elf 格式的可执行文件。我试图用 .elf 扩展名重命名可执行映像并将其加载到 Proteus 中。但 Proteus 模拟中止显示 elf 文件中的错误。

我可以成功加载 .hex 文件并运行仿真。我还使用其他工具链生成的可执行文件进行了调试。但是使用 GNU 工具链进行调试是摆在我面前的障碍。

我自己编写了链接器脚本,如下所示。有什么我缺少的吗?