gpt4 book ai didi

linux - ELF64 文件是什么样的?

转载 作者:太空宇宙 更新时间:2023-11-04 10:30:45 25 4
gpt4 key购买 nike

好的。

所以我一直在弄乱 Assembly,我想知道:链接 ELF64 文件是什么样的,我可以直接用纯文本编写链接文件吗? (比如创建一个文件,例如“main”,写入系统调用的十六进制值,然后在不链接或汇编的情况下运行它。)

我试过 objdump -x main 但我不认为,这是整个 ELF 文件,因为我认为信息太少了。

这里是输出:

main:     Dateiformat elf64-x86-64

Inhalt von Abschnitt .text:
4000b0 b8040000 00bb0100 0000b9d0 006000ba .............`..
4000c0 0c000000 cd80b801 000000cd 80 .............
Inhalt von Abschnitt .data:
6000d0 48454c4c 4f2c2057 4f524c44 HELLO, WORLD

我的汇编代码:

section .data
msg: db "HELLO, WORLD"
len: equ $-msg

section .text


;write
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, len
int 80h;

;quit
mov eax, 1
int 80h;

编辑:我的编译器现在完成了,我只是坚持使用汇编器并让 NASM/ld 完成工作

最佳答案

如果您想查看可执行文件的完整结构,请尝试:

objdump -D some_exe

如果您想查看十六进制格式的文件,请执行以下操作:

xxd some_exe

hexdump some_exe

can i directly write a linked file in plain-text?

好吧...理论上,如果您确切知道可执行文件的指令并将它们以二进制形式写入纯文本文件,则可以。

例如,对于任何给定的可执行文件exe_file,您可以这样做:

touch temp_file plaintext_file
xxd -p exe_file > temp_file
xxd -p -r temp_file > plaintext_file
chmod u+x plaintext_file

plaintext_file 将是一个与您的 exe_file 完全相同的可执行文件。如果在第 2 步和第 3 步之间你修改了 temp_file 你是在直接手动修改可执行文件,尽管它不太可能改变一些“特定的”东西,除非你对 elf64 格式有非常深刻的理解(这我不知道,我不确定用这个可以实现什么)。

注意:我知道第 1 步是多余的,我用它来演示您是从 2 个简单的纯文本文件开始的。

关于linux - ELF64 文件是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40081053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com