2017-08-12 78 views
-1

我该如何去了解Linux程序集中的资源文件?我想逐字节阅读它,并且我发现的所有内容都是在Windows中使用的。我刚刚开始学习汇编,似乎很少有好的资源。我使用NASM汇编器。在Linux程序集中创建一个资源文件

+0

为什么选择倒票? – Peyto

+0

这个问题是非常相似的这个[SO问题](https://stackoverflow.com/questions/42235175/how-do-i-add-contents-of-text-file-as-a-section-in- an-elf文件)。其中一个答案显示了如何使用'objcopy'来使用NASM(其中一个例子)。虽然它是关于文本文件,但它也适用于二进制文件。 –

回答

1

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

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

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

但是,不要指望除了你自己的可执行什么读取数据。例如,这不是您将图标附加到GUI可执行文件的方式;这是用完全不同的方法完成的。

+0

我将如何阅读该文件?在你的链接上的例子是C. – Peyto

+1

因此在NASM中,你需要'extern _binary_data_txt_start',然后是'mov rsi,_binary_data_txt_start'来获得指向'rsi'中数据的指针。或'mov al,[_binary_data_txt_start]'获取'al'中的第一个字节。 –