Дизассемблер

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая 193.124.236.7 (обсуждение) в 20:37, 8 января 2009. Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

Дизассе́мблертранслятор, преобразующий машинный код , объектный файл или библиотечные модули программы на языке ассемблера.

По режиму работы с пользователем делятся на

  • Автоматические
  • Интерактивные

Примером автоматических дизассемблеров может служить Sourcer. Такие дизассемблеры генерируют готовый листинг, который можно затем править в текстовом редакторе. Пример интерактивного — IDA. Он позволяет изменять правила дизассемблирования, весьма удобный инструмент для исследования программ.

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

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

Обычно используется параллельно с отладчиком.

См. также

Ссылки

Литература

  • Владислав Пирогов. Ассемблер для Windows. — СПб.: БХВ-Петербург, 2007. — 896 с. — ISBN 978-5-9775-0084-5.
  • Владислав Пирогов. Ассемблер и дизассемблирование.. — СПб.: БХВ-Петербург, 2006. — 464 с. — ISBN 5-94157-677-3.