Есть ли декомпилятор С++?

У меня есть программа, в которой я потерял исходный код на С++. Есть ли хорошие декомпиляторы С++ там?

Я уже наткнулся на Boomerang.

Ответ 1

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

n.b. Ясно, что если это огромный продукт, то это может не стоить времени.