Вопрос

У меня есть программа, в которой я потерял исходный код на C ++.Существуют ли какие-нибудь хорошие декомпиляторы C ++?

Я уже натыкался на Бумеранг.

Это было полезно?

Решение

Вы можете использовать IDA Pro Автор: Шестигранные лучи.Обычно вы не получите хорошего C ++ из двоичного файла, если не скомпилируете отладочную информацию.Приготовьтесь провести лот о ручном труде, обращающем вспять код.

Если вы не удаляли двоичные файлы, есть некоторая надежда, поскольку IDA Pro может создать похожий на C код для вашей работы.Обычно это очень грубо, по крайней мере, когда я пользовался им пару лет назад.

Другие советы

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

Да, но ни одному из них не удастся создать достаточно читаемый код, который стоил бы затраченных усилий.Вы потратите больше времени, пытаясь прочитать декомпилированный исходный код с блоками ассемблера внутри, чем переписывая свое старое приложение с нуля.

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

В зависимости от того, насколько большим и хорошо написанным был исходный код, возможно, стоит начать все сначала на вашем любимом языке (которым все еще может быть C ++) и извлечь уроки из любых ошибок, допущенных в последней версии.Разве кто-то однажды не говорил о том, чтобы написать книгу, которую можно выбросить?

н.б.Очевидно, что если это огромный продукт, то, возможно, на него не стоит тратить время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top