【问题标题】:Creating a resource file in Linux assembly [duplicate]在 Linux 程序集中创建资源文件 [重复]
【发布时间】:2018-01-20 14:11:59
【问题描述】:

我将如何在 Linux 程序集中拥有一个资源文件?我想逐字节阅读它,我发现的所有内容都与 Windows 一起使用。我刚开始学习汇编,似乎没有什么好的资源。我使用 NASM 汇编器。

【问题讨论】:

  • 为什么投反对票?
  • 这个问题与另一个SO question 非常相似。其中一个答案显示了如何使用 objcopy 来使用 NASM(示例之一)。虽然它是关于文本文件的,但它也适用于二进制文件。

标签: linux assembly


【解决方案1】:

一般来说,你不会。 Linux 不像 Windows 那样将资源数据嵌入到可执行文件中。

技术上可以将数据嵌入到可执行文件中 -- the easiest way is by using objcopy:

objcopy --input binary \
    --output elf32-i386 \
    --binary-architecture i386 \
    data.bin data.o

但是,不要指望除了您自己的可执行文件之外的任何东西都可以读取该数据。例如,这不是将图标附加到 GUI 可执行文件的方式;这是使用完全不同的方法完成的。

【讨论】:

  • 如何读取文件?您链接上的示例是用 C 语言编写的。
  • 所以在 NASM 中,您需要 extern _binary_data_txt_start 后跟 mov rsi, _binary_data_txt_start 以获取指向 rsi 中数据的指针。或mov al, [_binary_data_txt_start] 获取al 中的第一个字节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2011-06-08
  • 2012-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多