使用汇编器创建纯二进制数据(无 ELF、符号表等)

发布于 2024-10-20 21:04:48 字数 507 浏览 5 评论 0原文

我想将纯数据输入文件,即类似这样的文件:

 .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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

坐在坟头思考人生 2024-10-27 21:04:48

我挖了一下,找到了一个使用 nasm 的解决方案,从 http://www.nasm.us/ 获取。

原始数据的等效指令如下所示:

     org 0
foo  equ 42
     db "foo", 0
label:
     dd 0xffffffff
     dd 0x12345678 
     db foo
     dd label
     dd bar
bar  equ 'x'

使用 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:

     org 0
foo  equ 42
     db "foo", 0
label:
     dd 0xffffffff
     dd 0x12345678 
     db foo
     dd label
     dd bar
bar  equ 'x'

Assemble this with nasm -f bin -o file.bin file.S. Voila! Plain binary in file.bin. Guess that makes me a self-learner :-)

温柔戏命师 2024-10-27 21:04:48

在 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 the EXE2BIN utility.

in TASM you would assemble into an .obj file and then link TLINK with the /t/x parameters.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文