使用汇编器创建纯二进制数据(无 ELF、符号表等)
我想将纯数据输入文件,即类似这样的文件:
.data
.org 0
.equ foo, 42
.asciz "foo"
label:
.long 0xffffffff
.long 0x12345678
.byte foo
.long label
.long bar
.equ bar, 'x'
转换为具有相应字节序列 'f','o','o', 0, 0xff, 0xff, 0xff, 0xff, 0x78, 0x56, 0x34, 0x12, 42, 4, 0, 0, 0, 'x', 0 , 0, 0。
当我用 GNU 将其汇编为 (as -o foo.o -s foo.S
),我得到一个 400+ 字节的 ELF 文件。我怎样才能让GNU(或NASM或任何其他汇编器)给我简单的二进制表示?我研究过 GNU 作为选项,但没有结果。我可以修改输入格式,如果这使答案更容易(即使用更多和不同的伪操作)。
任何提示深表赞赏!
问候,延斯
I want to turn a data-only input file, i.e. something like this:
.data
.org 0
.equ foo, 42
.asciz "foo"
label:
.long 0xffffffff
.long 0x12345678
.byte foo
.long label
.long bar
.equ bar, 'x'
into a file with the corresponding byte sequence 'f','o','o', 0, 0xff, 0xff, 0xff, 0xff, 0x78, 0x56, 0x34, 0x12, 42, 4, 0, 0, 0, 'x', 0 , 0, 0.
When I assemble this with GNU as (as -o foo.o -s foo.S
), I get an 400+ bytes ELF file. How can I make GNU as (or NASM or any other assembler) give me the plain binary representation? I've studied the GNU as options but to no avail. I can modify the input format, if that makes the answer easier (i.e. use more and different pseudo ops).
Any hints deeply appreciated!
Regards, Jens
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我挖了一下,找到了一个使用 nasm 的解决方案,从 http://www.nasm.us/ 获取。
原始数据的等效指令如下所示:
使用 nasm -f bin -o file.bin file.S 进行组装。瞧!
file.bin
中的纯二进制文件。我猜这让我成为一个自学者:-)I dug around a bit and found a solution using nasm, grabbed from http://www.nasm.us/.
The equivalent directives for the original data would be something like this:
Assemble this with
nasm -f bin -o file.bin file.S
. Voila! Plain binary infile.bin
. Guess that makes me a self-learner :-)在 MASM 中,您可以将
MASM
汇编成 .obj 文件,将LINK
汇编成 .exe 文件,然后使用EXE2BIN
实用程序对结果 exe 文件进行后处理。在 TASM 中,您将汇编成 .obj 文件,然后将
TLINK
与/t/x
参数链接。in MASM you would assemble
MASM
into an .obj file,LINK
into an .exe file and then postprocess the result exefile with theEXE2BIN
utility.in TASM you would assemble into an .obj file and then link
TLINK
with the/t/x
parameters.