У меня есть программа, в которой я потерял исходный код на C++. Есть ли хорошие декомпиляторы C++?Есть ли декомпилятор C++?
Я уже наткнулся на Boomerang.
У меня есть программа, в которой я потерял исходный код на C++. Есть ли хорошие декомпиляторы C++?Есть ли декомпилятор C++?
Я уже наткнулся на Boomerang.
Вы можете использовать IDA Pro по Hex-Rays. Обычно вы не получите хороший C++ из двоичного файла, если вы не компилируете его в отладочную информацию. Приготовьтесь провести лот ручного труда, изменяющего код.
Если вы не разделили двоичные файлы, есть надежда, поскольку IDA Pro может создавать C-подобный код для работы. Обычно это очень грубо, хотя, по крайней мере, когда я использовал его пару лет назад.
Да, но никому из них не удастся создать достаточно читаемый код, чтобы приложить все усилия. Вы потратите больше времени, пытаясь прочитать декомпилированный источник с блоками ассемблера внутри, чем переписывать свое старое приложение с нуля.
информация отбрасывается в процессе компиляции. Даже если декомпилятор может создать логический эквивалентный код с классами и всем (что, вероятно, не может), самодокументируемая часть отсутствует в оптимизированном коде выпуска. Нет имен переменных, нет имен подпрограмм, нет имен классов - только адреса.
В зависимости от того, насколько велико и насколько хорошо написано исходный код, возможно, стоит начать снова на вашем любимом языке (который все еще может быть C++) и учиться на любых ошибках, сделанных в последней версии. Разве кто-то когда-то не говорил о том, чтобы писать, чтобы выбросить?
n.b. Ясно, что если это огромный продукт, то это может не стоить времени.
Я не видел никаких декомпиляторов, которые генерируют код на C++. Я видел несколько экспериментальных, которые делают разумную попытку генерации кода C, но они, как правило, зависят от соответствия шаблонам генерации кода конкретного компилятора (возможно, это изменилось, прошло некоторое время с тех пор, как я в последний раз смотрел на это). Конечно, любая символическая информация исчезнет. Google для «декомпилятора».
Чтобы уточнить, IDA предоставит только демонтаж. Там есть надстройка, называемая Hex-Rays, которая будет декомпилировать остальную часть пути в исходный код C/C++, насколько это возможно. – davenpcj 2012-05-05 12:55:10
К моему чтению документов, шестнадцатеричные лучи только выходы C любят псевдокод. Не то чтобы это бесполезно для декомпиляции C++, вам просто нужно немного узнать, как компиляторы преобразуют структуры C++. – 2013-04-11 05:32:02
Чтобы уточнить еще раз, дизассемблер - это самая декомпиляционная система, в которой Hex-Rays переведет ASM на C++. ASM может быть переведен на любой язык программирования с работой, поскольку все программы могут работать как ASM – 2014-04-12 12:08:30