Создать исполняемый файл из шестнадцатеричного файла в Linux - PullRequest
3 голосов
/ 25 апреля 2020

У меня есть файл, содержимое которого представляет машинный код x64 в шестнадцатеричном формате.

48 c7 c0 7b 00 00 00 48 c7 c1 59 01 00 00 48 01 c8 c3

Пример выше можно разобрать на:

0:  48 c7 c0 7b 00 00 00    mov    rax,0x7b
7:  48 c7 c1 59 01 00 00    mov    rcx,0x159
e:  48 01 c8                add    rax,rcx
11: c3                      ret

Этот машинный код генерируется напрямую, поэтому приведенный выше ассемблер приведен в качестве примера. У меня нет доступа к нему вообще.

Что я хочу сделать, так это преобразовать этот шестнадцатеричный файл в исполняемый файл и сделать его наиболее прямым из возможных. Я попытался использовать xxd -r, но, похоже, это не создает хорошо отформатированный исполняемый файл, так как я получаю Exec format error при попытке его запустить.

Как мне сгенерировать исполняемый файл из шестнадцатеричного кода в Linux * * 1013

1 Ответ

0 голосов
/ 25 апреля 2020

Из моего понимания обсуждения, которое последовало за моим вопросом, я хочу создать файл ELF. Этот вопрос охватывает, как создать свой собственный заголовок ELF .

. Хотя, если вы не хотите go решить проблему, вы можете использовать gcc для компиляции последовательности байт исполняемого файла.

.section .text
    .global main
main:
    .byte 0x48 0xc7 0xc0 0x7b 0x00 0x00 0x00 0x48 0xc7 0xc1 0x59 0x01 ...

Затем вы можете скомпилировать вышеприведенное с помощью gcc file.S -o file. Это создаст нужный файл ELF.

...