Как декомпилировать exe или dll в сборку

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


person Keshan    schedule 30.12.2010    source источник


Ответы (4)


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

person Matt    schedule 30.12.2010
comment
любой способ декомпилировать 64-битные приложения? - person Havnar; 08.12.2017
comment
Конечно, есть. Новейшая версия IDA может это сделать (как и многие другие), но она не бесплатна. - person Matt; 13.12.2017

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

person Walt Stoneburner    schedule 30.12.2010
comment
Я предполагаю, что вы собираетесь учиться в общем образовании, кстати. - person Walt Stoneburner; 30.12.2010

Для вас уже написано множество ассемблеров (см. Выше), но я не думаю, что чтение дизассемблированного кода поможет вам стать лучше писателем на ассемблере. Основная причина этого в том, что компиляторы проводят МНОГО оптимизации перед созданием сборок. Часто это делает код очень сложным для чтения, но очень эффективным для анализа.

person Corith Malin    schedule 30.12.2010
comment
+1 помогает вам (новичку в ассемблере) запутаться - person BlackBear; 30.12.2010
comment
Я проголосовал за этот ответ, так как это не ответ, а просто попытка отговорить OP от попытки разобрать. Во-вторых, поскольку это в некоторой степени верный комментарий, я хотел отменить голосование против, но SO не позволяет мне это сделать. - person ssh; 14.12.2013

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

person 6502    schedule 30.12.2010
comment
Это предполагает, что у вас есть исходный код программы и что использованное программирование может быть скомпилировано GCC, например C, C ++, Objective-C, Objective-C ++, Fortran, Ada, D, Go и BRIG. - person Alexander Ryan Baggett; 02.02.2020
comment
@AlexanderRyanBaggett: вы также можете дизассемблировать объектные файлы, например, для Linux вы можете использовать objdump. Но компилировать свой собственный код и посмотреть, как он выглядит, проще и позволяет экспериментировать. Сегодня это все еще довольно сложно, особенно если вы компилируете с оптимизацией; Однако я помню код, сгенерированный Turbo Pascal для 8086, который было действительно легко понять. - person 6502; 02.02.2020