Как получить инструкции по сборке или мнемонику из кода операции / машинного кода?

У меня есть двоичный файл, скомпилированный с использованием gcc простой программы на c. Я пишу свой собственный дизассемблер, я могу читать заголовок ELF и другие заголовки из файлов ELF.

Я читаю раздел ".text" из двоичного файла ELF. И пытается преобразовать опекод в инструкцию мнемоники / сборки.

Как преобразовать необработанный код операции / машинный код в инструкцию мнемоники / сборки?? C исходный код:

#include <stdio.h>

int main()
{
  int i = 10;
  int j = 22 + i;

  return 0;
}

Ниже приведен пример необработанного кода операции, который я получил после прочтения файла ELF:

55 ffffff89 ffffffe5 ffffff83 ffffffec 20 ffffffc7 45 ffffffec 3 ffffffc7 45
fffffff0 41 ffffffc7 45 fffffff4 8 ffffffc7 45 fffffff8 21 ffffff8b 45
ffffffec ffffff83 ffffffc0 16 ffffff89 45 fffffffc ffffffb8 ffffffc9 ffffffc3

1 ответ

Если у вас установлен GNU binutils (который у вас, вероятно, есть), вы можете использовать

objdump --disassemble elf-file

Если вопрос "Почему я получаю эти числа ffffff", то вам нужно показать нам код, который производит числа. Скорее всего, у вас проблема с расширением знака от подписанных символов до int.

Другие вопросы по тегам