Как выглядит файл ELF64?

Хорошо.

Так что я был возиться с Assembly, и мне было интересно: просто КАК ЛИНИИ видят файл ELF64, и могу ли я напрямую написать связанный файл в текстовом формате? (например, создать файл eG «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;

EDIT: Мой компилятор закончен, я просто застрял с ассемблером и позволил NASM / ld выполнить работу

linux,assembly,compiler-construction,64bit,elf,

0

Ответов: 1


1 принят

Если вы хотите увидеть всю структуру исполняемого файла, попробуйте:

objdump -D some_exe

и если вы хотите увидеть ваш файл в шестнадцатеричном формате, выполните следующие действия:

xxd some_exe

или же

hexdump some_exe

могу ли я напрямую написать связанный файл в текстовом формате?

Ну ... Теоретически вы можете, если знаете точно инструкции исполняемого файла, и записываете их в двоичном виде в файл открытого текста.

Например, для любого данного исполняемого 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 избыточен, я использовал его для демонстрации того, что вы начинаете с двух простых файлов открытого текста.

линукс, сборка, компилятор строительство, 64bit, эльф,