Я действительно интересуюсь языком ассемблера, и я хочу узнать о том, как работают файлы exe, как запускаются библиотеки DLL и т. Д ... и у меня есть идея написать приложение для декомпиляции exe в код сборки, так как я не очень хороший программист на сборке и из-за незнания внутренней работы exe я не мог этого сделать. Поскольку я могу читать exe в шестнадцатеричном формате, я думаю, что это возможно, но я не знаю, как написать свою собственную программу. Любые ресурсы или любая помощь будут оценены.
Как декомпилировать exe или dll в сборку
Ответы (4)
Я думаю, вы ищете дизассемблер, а не декомпилятор. IDA pro кажется популярным, и вы можете бесплатно загрузить старую версию со страницы http://www.hex-rays.com/idapro/idadownfreeware.htm.
Взгляните на эту Decompilation Wiki, я подозреваю, что она ответит на большинство ваших вопросов.
Для вас уже написано множество ассемблеров (см. Выше), но я не думаю, что чтение дизассемблированного кода поможет вам стать лучше писателем на ассемблере. Основная причина этого в том, что компиляторы проводят МНОГО оптимизации перед созданием сборок. Часто это делает код очень сложным для чтения, но очень эффективным для анализа.
Если вас интересует, как выглядит скомпилированная программа на уровне ассемблера, гораздо более осмысленным подходом будет компиляция и просмотр сгенерированной сборки. Например, с gcc / g ++ для этого просто требуется gcc -c -S filename.c
, и вы оставите пустой текстовый файл сборки для просмотра.
objdump
. Но компилировать свой собственный код и посмотреть, как он выглядит, проще и позволяет экспериментировать. Сегодня это все еще довольно сложно, особенно если вы компилируете с оптимизацией; Однако я помню код, сгенерированный Turbo Pascal для 8086, который было действительно легко понять.
- person 6502; 02.02.2020