Подтвердить что ты не робот

Получение источника из объектного файла

Есть ли способ получить исходный код с помощью объектного файла в C?

Например, у меня есть исходный код simple.c

cc simple.c

Теперь у меня есть a.out(object file). К этому a.out можно ли получить источник?

код simple.c

4b9b3361

Ответ 1

Существует множество полезных инструментов для извлечения информации из вашего исполняемого файла. Ни один из них не может вернуть исходный исходный код (как указывал другой пользователь, это невозможно для C), но вы можете попробовать некоторые обратные инженерные инструменты. Мой предпочтительный вариант:

  • Objdump (часть пакета binutils)
  • hte (debian упаковывает его как "ht" )

С первым вы можете получить все экспортированные символы и их относительный исполняемый код с точки зрения сборки (очевидно, это верно только для разделов .text). Второе предназначено для работы с архитектурами intel, но вы сможете проанализировать каждый исполняемый файл и получить информацию о разделах и символах ELF.

Ответ 2

Нет. Поворот коровы в гамбургер довольно просто. Превращение гамбургера в живую корову несколько сложнее.

Ответ 3

Нет.

При обратном проектировании (чтение разборки) можно было бы восстановить логику, но имена переменных, комментарии и т.д. обычно теряются.

Ответ 4

Слова для программ, которые вы ищете, это " disassembler" (поворот машинного языка в a.out на ассемблере ) и " decompiler" (превращение языка ассемблера в C, как объясняется Дакавом, гораздо сложнее, и результат никогда не удовлетворяется).

Но использование поисковой системы с этими словами может привести к результатам.

Ответ 5

Если вы используете Linux, используйте gdb

$gdb a.out

(gdb) list