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

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

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

cc simple.c

Теперь у меня есть a.out (объектный файл). Этим a.out, может ли, я получаю источник?

код simple.c

18
задан Bill the Lizard 5 May 2013 в 13:51
поделиться

4 ответа

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

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

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

13
ответ дан 30 November 2019 в 05:53
поделиться

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

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

1
ответ дан 30 November 2019 в 05:53
поделиться

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

52
ответ дан 30 November 2019 в 05:53
поделиться

Нет.

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

1
ответ дан 30 November 2019 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: