2012-01-31 8 views
3

Я знаю, что этот вопрос может быть странным. Но я просто хочу знать, можно ли преобразовать любой исполняемый файл (.exe или a.out) обратно в исходный код? Есть ли какой-нибудь инструмент? Если нет, то, пожалуйста, игнорируйте этот вопрос.Преобразование исполняемого кода в код

ответ

5

Может быть Boomerang может быть полезен.

+0

+1 Спасибо за это! [* Редактировать: * О, проект выглядит довольно мертвым ...] –

+0

Он мертв, но я только что дал, потому что по крайней мере это * что-то, что хочет OP. –

1

Нет такой вещи, как «исходный код». Программа могла быть собрана любым способом. (Например, это могло быть написано в Pascal, COBOL или даже непосредственно в машинный код.) Самое лучшее, что вы можете сделать, это «разобрать» программу, то есть превратить машинный код в читаемую мнемонику для ассемблера. Если у вас есть четкое представление о том, как компиляторы реализованы, тогда вы вполне сможете распознать обычные шаблоны и вывести какой-то эквивалентный код C.

Существуют инструменты, которые используют эвристику на основе таких знаний и автоматизируют процесс. Я не знаю никаких открытых исходников, но думаю, что IDA Disassembler идет к этой цели.

1

Hh, если вы имеете в виду преобразовать обратно в исходный код на ассемблере, да, есть очень простой способ сделать это (на Линукс maxhines): objdump --disassemble <binaryname>, вы уверены, что можете использовать некоторые окна disassembler.

Вы имеете в виду исходный исходный код С, есть два варианта. Когда вы пытаетесь отменить приложение, которое было скомпилировано с использованием отладочных символов (например, gcc -g ...), вы должны иметь возможность получать исходные коды через отладчик (в gdb он будет командовать следующим образом: disassemble /m).

И если вы не используете их ... Чем вы должны Google для reverse engineering :)

Смежные вопросы