2016-10-17 14 views
0

Хорошо.Как выглядит файл ELF64?

Так что я был возиться с Assembly, и мне было интересно: просто КАК ЛИСТЬЯ выглядит файл ELF64, и могу ли я напрямую написать связанный файл в текстовом формате? (например, создать файл eG «main», записать шестнадцатеричные значения системных вызовов, а затем запустить его без привязки или сборки.)

Я пробовал objdump -x main, но я не думаю, что это все ELF-File, потому что есть слишком мало информации, как я думаю.

Вот вывод:

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 

мой Assembler Код:

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/л.д. сделать работу

+0

Вы пытались прочитать документацию о том, как структурирован ELF? – fuz

+0

Вы имеете в виду 'man elf' –

+0

Это хороший источник для начала. – fuz

ответ

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

+0

ok. Но теперь сложная часть: я хотел создать компилятор, который просто записывает открытый текст, сохраняет его, а затем chmods. возможно ли это, или я слишком амбициозен? –

+0

и другие вопросы: почему так много пробелов? –

+0

Я имею в виду, почему так много пробелов, когда я запускаю xxd? –