Там какой-либо путь состоит в том, чтобы получить исходный код при помощи объектного файла в C?
Например, у меня есть исходный код simple.c
cc simple.c
Теперь у меня есть a.out (объектный файл). Этим a.out, может ли, я получаю источник?
код simple.c
Есть много полезных инструментов для получения информации из вашего исполняемого файла. Ни один из них не может вернуть вам исходный код (как заметил другой пользователь, для C это невозможно), но вы можете попробовать некоторые инструменты обратного проектирования. Я предпочитаю:
С первым вы можете фактически получить все экспортированные символы и их соответствующий исполняемый файл. код с точки зрения сборки (очевидно, это верно только для секций .text
). Второй предназначен для работы с архитектурами Intel, но вы сможете проанализировать каждый исполняемый файл и получить информацию о секциях и символах ELF.
Слова для программ, которые вы ищете: « дизассемблер » (превращение машинного языка из a.out в язык ассемблера) и « декомпилятор » (превратить ассемблер в C, как объяснил Дакав, это намного сложнее, и результат никогда не бывает удовлетворительным).
Но использование поисковой системы по этим словам может дать результаты.
Нет. Превратить корову в гамбургер довольно просто. Превратить гамбургер в живую корову несколько сложнее.
Нет.
С помощью обратного проектирования (чтения дизассемблера) можно восстановить логику, но имена переменных, комментарии и т. Д. Обычно теряются.