2010-12-30 2 views
8

Мне очень нравится язык ассемблера, и я хочу узнать, как exe-файлы работают, как работают dll и т. Д. ... и у меня есть идея написать приложение для декомпиляции exe для сборки кода, так как я не очень хороший программист сборки и с отсутствием знаний о внутренней работе exe, я не мог этого сделать. Поскольку я могу читать exe в hex, я думаю, что это невозможно, но я не знаю, как написать свою собственную программу. Любые ресурсы или любая помощь будут оценены.Как декомпилировать exe или dll для сборки

ответ

17

Я думаю, что вы ищете дизассемблер, а не декомпилятор. IDA pro, кажется, популярен, и вы можете скачать старую версию бесплатно по адресу http://www.hex-rays.com/idapro/idadownfreeware.htm

+0

+1 для этого устрашающего дебасса. –

+0

любой способ декомпилировать 64-битные приложения? – Havnar

+0

Конечно, есть. Самая новая версия IDA может это сделать (как и многие другие), она просто не бесплатна. – Matt

4

Посмотрите на это Decompilation Wiki, я подозреваю, что ответит на большинство ваших вопросов.

+0

Я предполагаю, что вы собираетесь на всеобщее образование, кстати. –

6

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

+0

+1 это помогает вам (начинающий на языке ассемблера) запутаться – BlackBear

+2

Я пропустил этот ответ, так как это не ответ, а просто попытка отбить OP от попытки разобрать. С другой стороны, поскольку это несколько верный комментарий, я хотел отменить подачу голоса, но SO не позволит мне это сделать. – ssh

3

Если вам интересно, как выглядит скомпилированная программа на уровне ассемблера, гораздо более содержательный подход будет компилироваться и смотреть на сгенерированную сборку. Например, с gcc/g ++ для этого требуется только gcc -c -S filename.c, и вы получите чистый текстовый сборник.