28982 автора и 62 редактора ответили на 85243 вопроса,
разместив 135214 ссылок на 43429 сайтов, присоединяйтесь!

Что такое баги?

РедактироватьВ избранноеПечать

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

 

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

 

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

 

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

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

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

 

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

 

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

 

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

 

Источники информации:

Последнее редактирование ответа: 08.04.2013

  • Оставить отзыв

    Оставить отзыв

РедактироватьВ избранноеПечать


Посмотреть «баги» в словарях и энциклопедиях:

ЯndexВикипедияКругосветKM.RU@mail.ruGoogle

«Что такое баги»

В других поисковых системах:

GoogleЯndexRamblerВикипедия

В соответствии с пользовательским соглашением администрация не несет ответственности за содержание материалов, которые размещают пользователи. Для урегулирования спорных вопросов и претензий Вы можете связаться с администрацией сайта genon.ru. Размещенные на сайте материалы могут содержать информацию, предназначенную для пользователей старше 18 лет, согласно Федерального закона №436-ФЗ от 29.12.2010 года "О защите детей от информации, причиняющей вред их здоровью и развитию". Обращение к пользователям 18+.