Можно ли конвертировать PPC Assembly в C? - PullRequest
1 голос
/ 04 декабря 2010

У меня есть код PPC, который я хочу преобразовать обратно в исходный код C, есть ли способ сделать это?Возможно, человек (например, кто-то, кто знает PPC для реконструкции кода C?) Или программу?

Ответы [ 4 ]

1 голос
/ 10 июня 2017

IDA Pro 6.95 включает в себя декомпилятор PPC. Но это немного дорого ($ 2350)

1 голос
/ 04 декабря 2010

Да и нет.

В принципе возможно перевести программу на любой язык на любой другой язык. Результаты не будут красивыми.

Если существующий код действительно является результатом компиляции без слишком умной оптимизации, то вполне вероятно, что довольно заурядный процесс может вернуть его обратно к C. Часто это легко сделать вручную для небольших объемов кода, но утомительно и подвержено ошибкам для больших баз кода.

Существуют некоторые инструменты обратного инжиниринга, которые заявляют о декомпиляции. В общем случае это непростая проблема.

Одним из подходов к автоматизации проблемы является создание PPC-сборки (или даже двоичного кода) для компилятора, который уже поддерживает серверную часть языка C. В результате получается кросс-компилятор, который читает код PPC и создает сильно запутанный C-код. Я знаю, что есть бэкэнд C для GCC, например.

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

Редактировать: Обратите внимание, что вы никогда не получите исходные комментарии и получите доступ только к исходным именам переменных и функций, которые превратили его в таблицу символов или аналогичную отладочную информацию.

0 голосов
/ 04 декабря 2010

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

Это из проекта бумеранга:

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

Таким образом, он создает некоторый код C, который может быть (но никогда не узнает) источника C.

0 голосов
/ 04 декабря 2010

Бумеранг утверждает, что поддерживает декомпиляцию PPC.

...