Ассемблер и дизассемблер — две стороны одной медали. Ассемблер превращает текст программы на языке ассемблера в двоичный код, дизассемблер переводит модуль в двоичном коде в последовательность ассемблерных команд. Для анализа дизассемблированного кода, таким образом, крайне важно знать машинные команды, их двоичный формат и ассемблерное представление. Очень важно понимать структуру представления данных в памяти компьютера, а также знать структуру программ, написанных для операционной системы Windows. Все это мы будем обсуждать в данной книге.
В книге рассмотрены вопросы исследования кода Windows-приложений. Подробно описаны формат исполняемых модулей и структура инструкций микропроцессора Intel. Дан полный обзор инструментария по исследованию исполняемого кода: отладчики, дизассемблеры, редакторы ресурсов, НЕХ-редакторы и др. Большое внимание уделено работе с популярными программами по дизассемблированию и отладке SoftlCE и IDA Pro. Приведены примеры исследования исполняемого кода и описаны основные принципы подобного исследования: идентификация программных структур, поиск данных и др. Прилагаемый компакт-диск содержит тексты всех листингов, описанных в книге, а также учебные программы.