如何从可执行文件中提取数组?

Posted

技术标签:

【中文标题】如何从可执行文件中提取数组?【英文标题】:How can I extract an array from an executable file? 【发布时间】:2010-04-27 14:43:52 【问题描述】:

我想做this question的逆操作。

我将文件作为数组嵌入到可执行文件中,稍后我想从可执行文件中提取嵌入的文件。

似乎 objcopy 在这里可能有用,但我还没有弄清楚正确的咒语。

(编辑:澄清问题,我最初在编辑时不知何故删除了它的症结......)

【问题讨论】:

你是什么意思逆? - 这个问题是如何将文件作为数组嵌入到可执行文件中。 我不确定我是否完全理解这个问题,但不会按字节将数组打印到文件中吗? tiftik:我想在不运行可执行文件的情况下提取嵌入文件。 【参考方案1】:

如果您将嵌入文件放在其自己的部分中,您可以使用 objcopy 将该部分提取到原始输出文件中,我认为。 查看 gcc 的__attribute__((section("embedded_file") )) 或者,如果您使用链接器以其他方式将文件放入 exe,您应该能够以另一种方式将其放入另一个部分,但我不熟悉这样做。

【讨论】:

谢谢。这个我也看了一下,试试看。【参考方案2】:

在数组的开头放置一个可识别的模式,以帮助您找到文件中的数据。

如果您正在创建 Windows 可执行文件,请将数据放入可执行文件的二进制资源中,而不是仅仅将其编码为数组 - 然后您可以使用普通的 Windows 资源函数(FindResourceLoadResource 等.) 来获取数据(虽然这比最初看起来应该的要正常工作有点棘手)。

【讨论】:

这是一个 linux (elf32-powerpc) 可执行文件。我正在寻找比模式搜索更强大的东西。 @bstpierre:一些人已经完成了一些项目,以使用 Unix 可执行格式添加类似资源的功能。您可能想看看:taniwha.com/~paul/res 的一个例子。

以上是关于如何从可执行文件中提取数组?的主要内容,如果未能解决你的问题,请参考以下文章

从可执行文件创建 Windows 服务

如何从可执行文件更改mac应用程序名称?

使用 def 文件从可执行文件中导出函数

从可执行文件中找出编译优化标志

从可执行文件 (.exe) 中恢复 NodeJS 代码

将类从可执行文件导出到 dll