Реинженеринг/Дизассемблеры
Эта страница описывает технологии и программы для дизассемблирования. Все перечисленные программы обязаны включать сайт, с которого их можно скачать (только для бесплатного/открытого ПО) или домашнюю страницу (в случае с платными программами). Мы не собираемся ограничивать эту викикнигу только бесплатными программами, даже если они наиболее популярны для начинающих. Если список дизассемблеров станет сильно большим, то его содержимое может быть перемешено в приложение.
Будущее обсуждение дизассемблеров, и процесса дизассемблирование будет обсуждается в последующих секциях.
Что такое дизассемблер ? [ править ]
В Википедии имеется статья по теме «Дизассемблер»
По сути, дизассемблер является полной противоположностью ассемблеру. Если Ассемблер конвертирует код написанный на языке ассемблера в двоичный машинный код, то дизассемблер обращает этот процесс и пытается воссоздать код ассемблера из машинного кода.
Так как большинство ассемблеров один-в-один соответствуют машинным инструкциям, процесс дизассемблирования относительно прямоходный, и базовый дизассемблер может быть созданы простым побайтным чтением, и просмотром таблицы соответствий. Конечно дизассемблирование имеет свои собственные проблемы и подвохи, и они будут освещены далее.
Многие дизассемблеры могут иметь настройки для вывода инструкций ассемблера в Intel, AT&T, или (частично) HLA синтаксисы.
Дизассемблеры x86 [ править ]
Дизассемблеры под Windows [ править ]
Для удобства, мы разделили дизассемблеры под Windows на 2 категории: Коммерческие, и Бесплатные инструменты.
IDA Pro Это профессиональный дизассемблер, крайне мощный, и имеющий весь набор необходимых возможностей. Обратная сторона IDA это цена — 430 долларов США за стандартную однопользовательскую лицензию. Естественно такая цена заслуживает значения, данная викикнига не рассматривает именно IDA Pro, так-как цена исключительна. Существуют две бесплатные версии; смотрите ниже. http://www.datarescue.com/idabase/ PE Explorer Дизассемблер «сосредоточенный на простоте использования, доходчивости и навигации». Он не наделен такими возможностями как IDA Pro, однако взамен функциональности, стоит гораздо меньше: $130 http://www.heaventools.com/PE_Explorer_disassembler.htm W32DASM Отличнейший 16/32-битный дизассемблер под Windows http://members.cox.net/w32dasm/
Бесплатные инструменты [ править ]
IDA 3.7 Этот консольный инструмент очень похож на IDA Pro, однако более ограничен. Может дизассемблировать код для процессоров Z80, 6502, Intel 8051, Intel i860, и PDP-11, так-же хорошо поддерживает инструкции x86 вплоть до 486. http://www.simtel.net/product.php Ghidra Бесплатный дизассемблер от АНБ, конкурирующий с IDA Pro. Поддерживает большинство процессоров, имеет фреймворк для создания скриптов, чтобы расширить функционал. https://www.ghidra-sre.org/
Просмотр кода дизассемблирования в отладчике Visual Studio (C#, C++, Visual Basic, F#)
Область применения:Visual Studio Visual Studio для Mac Visual Studio Code
В окне Дизассемблированный код отображается код сборки, соответствующий инструкциям, созданным компилятором. При отладке управляемого кода эти инструкции ассемблера соответствуют присущему данному объекту коду, созданному компилятором JIT, а не промежуточному языку (MSIL), созданному компилятором Visual Studio.
Чтобы воспользоваться всеми возможностями окна Дизассемблированный код, изучите основы программирования на языке ассемблера. Справочные материалы для наборов инструкций Intel находятся в 2-м томе руководства по архитектуре. Этот материал обычно относится к наборам инструкций AMD, а также.
Эта возможность доступна, только если включена отладка на уровне адреса. Она недоступна для отладки скриптов и SQL.
В дополнение к инструкциям ассемблера в окне Дизассемблированный код могут отображаться следующие сведения:
- Адреса в памяти, где располагается каждая из инструкций. Для собственных приложений это фактические адреса в памяти. Для кода на Visual Basic или C# это смещение относительно начала функции.
- Исходный код, из которого получается код сборки.
- Байты кода, то есть байтовое представление реальных инструкций компьютера или языка MSIL.
- Символьные имена для адресов памяти.
- Номера строк, соответствующие исходному коду.
Инструкции на языке ассемблера состоят из мнемоник, представляющих собой сокращения имен инструкций, и символов, которые обозначают переменные, регистры и константы. Каждую инструкцию машинного кода представляет одна мнемоника ассемблера, за которой следует один или несколько необязательных символов.
Код на ассемблере активно использует регистры процессора, а при использовании управляемого кода — регистры среды выполнения. Вы можете использовать окно Дизассемблированный код в сочетании с окном Регистры, которое позволяет изучить содержимое регистров.
Чтобы просмотреть инструкции машинного кода в необработанной числовой форме, а не на языке ассемблера, используйте окно Память или выберите Байты кода в контекстном меню в окне Дизассемблированный код.
Использование окна дизассемблирования
Чтобы включить окно Дизассемблированный код, выберите в разделе Сервис>Параметры>Отладка параметр Включить отладку на уровне адреса.
Чтобы открыть окно Дизассемблированный код во время отладки, выберите Windows>Дизассемблированный код или нажмите сочетание клавиш ALT+8.
В зависимости от установок или выпуска сервера доступные диалоговые окна и команды меню могут отличаться от описанных в справке. Чтобы изменить параметры, выберите Импорт и экспорт параметров в меню Сервис . Дополнительные сведения см. в разделе Сброс параметров.
Чтобы включить или отключить вывод дополнительных сведений, щелкните правой кнопкой в окне Дизассемблированный код и установите или снимите в контекстном меню соответствующие флажки.
Желтая стрелка, расположенная в левом поле, отмечает текущую точку выполнения. Для собственного кода точка выполнения соответствует счетчику команд ЦП. В этом расположении отображается следующая инструкция, которая будет выполнена в программе.
Перемещение вверх или вниз в области памяти
При просмотре содержимого памяти в окне Память или Дизассемблированный код для перемещения вверх и вниз по области памяти можно использовать вертикальную полосу прокрутки.
- Для перемещения на страницу вниз (к старшему адресу памяти) щелкните вертикальную полосу прокрутки ниже того места, где находится бегунок.
- Для перемещения на страницу вверх (к младшему адресу памяти) щелкните вертикальную полосу прокрутки выше того места, где находится бегунок. Обратите внимание, что вертикальная полоса прокрутки работает не в стандартном режиме. Современные персональные компьютеры имеют огромное адресное пространство, поэтому в нем достаточно легко заблудиться, перетаскивая бегунок полосы прокрутки в произвольное расположение. По этой причине бегунок «подпружинен» и всегда остается в центре полосы прокрутки. В приложениях машинного кода можно постранично перемещаться вверх и вниз, однако нельзя свободно использовать полосу прокрутки. В управляемых приложениях дизассемблирование ограничивается одной функцией и прокруткой можно пользоваться в обычном режиме. Обратите внимание, что старшие адреса отображаются в нижней части окна. Для просмотра старших адресов следует перемещаться вниз, а не вверх.
Перемещение вверх или вниз одной инструкции
- Щелкните стрелку, расположенную над или под вертикальной полосой прокрутки.
См. также
- Просмотр данных в отладчике
- Практическое руководство. Использование окна регистров
Как дизассемблировать программу?
Уважаемые форумчане, подскажите мне пожалуйста как добраться до исходного кода, exe файла. Учитель задал эту задачу будучи не вдаваясь в подробности, (единственное что он показал как его дизассемблером пропустить, но что то у меня перестало это получатся) суть самому найти ответ, но я застрял. Если бы меня кто то подтолкнул? Буду рад любым вашим советам.
Вложения
Project20.rar (167.0 Кб, 6 просмотров) |
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как дизассемблировать DOS СОМ программу
Здравствуйте, Не подскажите мне пожалуйста, Как я смогу узнать код ассемблера (( Я хочу изучить.
Как дизассемблировать файл
Как дисассемблировать файл не подскажете.
Как дизассемблировать в windows xp?
Как дизассемблировать в windows xp.
Подскажите, как правильно дизассемблировать прошивку?
Доброго времени суток всем. Сразу же оговорюсь, что в деле программирования для микроконтроллеров.
8380 / 4262 / 1618
Регистрация: 01.02.2015
Сообщений: 13,263
Записей в блоге: 5
MerlinCheater, судя по всему, это программа создана на языке высокого уровня — C или Delphi.
Если нет ни опыта ни желания — восстановить исходник не получится.
Также, были случаи злоупотребления
Пояснение строчек кода
Поэтому поясните происхождение файла, причины, побудившие преподавателя дать такое задание человеку с гуманитарной специальностью.
Добавлю от себя. Задачи подобного рода — большая редкость и всегда вызывают вопросы о целесообразности помощи.
Регистрация: 23.11.2019
Сообщений: 5
Насчет того, что побуждает учителей что либо делать мне не ведомо, я же не учитель. Ну а насчет опыта, ну его мало потому я и учусь. Желание конечно есть, я уже все что мог попробывал, и различные программы и прочее не получилось. Что еще добавить?
Эксперт Hardware
5749 / 2218 / 382
Регистрация: 29.07.2014
Сообщений: 3,036
Записей в блоге: 4
Сообщение от MerlinCheater
я уже все что мог попробывал, и различные программы и прочее не получилось. Что еще добавить?
что именно не получается, и о каких программах идёт речь?
530 / 179 / 38
Регистрация: 18.08.2012
Сообщений: 886
Программа написана на Delphi 7
Основное и единственное действие происходит в
00452D34 TForm1_FormCreate proc near
Основной функционал — это trial
Добавлено через 11 минут
Остаётся только повторить:
я — крайне сомневаюсь, что в универах дают задания по взлому/реверсу/декомпиляции программ, особенно если они на Delphi или с использованием MFC — т.к. для новичка (да и для самого препода) — это очень трудно, если вообще возможно для них.
Так что. автор — не мутите воду — вы форумом ошиблись. Вам бы на exelab с таким. Там это любят.
Как дизассемблировать
Получить дизассемблированный код можно с помощью IDA Pro AVR, но есть более простой вариант, с помощью симулятора AVR Studio 4.19. Единственное условие — двоичный файл должен быть в формате Intel HEX [1].
1. Запустите AVR Studio, в меню File выберите дизассемблируемый HEX-файл.
2. AVR Studio предложит создать новый проект, укажите произвольное имя для проекта. Можно оставить то имя, что AVR Studio предлагает по умолчанию.
3. Откроется окно «Select device and debug platform» (выбор устройства и платформы отладки). В списке «Debug platform:» выберите AVR Simulator или AVR Simulator 2. В списке «Device:» выберите микроконтроллер AVR, к которому относится дизассемблируемый двоичный код, который Вы открыли на шаге 1. Кликните на кнопке Finish.
4. Запустится симулятор, где в окне Disassembler будет открыт дизассемблированный код. Его можно выполнить по шагам, отслеживая алгоритм работы программы. Также можно выделить нужные части дизассемблированного кода, скопировать его в буфер обмена и вставить в текстовый файл.
[Ссылки]