В книге рассмотрен язык Ассемблера для процессоров семейства Intel 80x86, а также различные аспекты применения этого языка в области защиты информации. Книга состоит из шести глав. Глава 1 это учебное пособие по программированию на Ассемблере в среде DOS для начинающих. В ней приведено описание архитектуры компьютера IBM PC, системы команд, способов адресации данных, системных функций, некоторых приемов программирования. Вторая и третья главы книги рассчитаны на более подготовленного читателя. Глава 2 содержит описание криптографических методов и возможные способы решения задач контроля целостности и обеспечения секретности информации.
Противник может исследовать программу в виртуальной системе, где эмулируются процессор, память, внешние устройства, операционная среда и т. В этой ситуации большинство приемов противодействия оказываются неэффективными. Можно выделить типичные ошибки разработчиков программных систем защиты. Программные средства защиты информации программа защищается только от средств статического анализа, в результате она . Итак неснимаемых защит действительно нет и быть не может, но задачу сделать не ходимую для любого отладчика . Задача разработчика защит от исследования может состоять в том, чтобы либо вынудить противника потратить на снятие защиты время, достаточное для . Другая группа возражений сводится к тому, нет смысла создавать защиты . Однако это логика офисного г граммиста. Но под ней работают программы компьютерных систем ответственного цел го назначения а в защите от исследования именно они нуждаются. Взломом программы ответственн назначения могут воспользоваться диверсанты или террористы, а это уже гро катастрофой. Итак, мы пишем программу . Соответственно, мы должны учитывать существ. Обзор хакерского инструментария Для исследования и вскрытия программ хакерами применяются разнообразные п . программы для обмана типичных алгоритмов защиты. Наиболее универсальными средствами, которые чаще всего используются для изуче. ния кода программы без исходных текстов . Первые преобразуют непонятный машинный код в удобочитаемый текст на языке Ассемблера. Вторые информируют обо всех процессах, протекающих в недрах компьютера, после выполнения отдельного участка или даже каждой инструкции программы. Наша же задача, как разработчиков подсистемы обеспечения секретности кода, заключается в том, чтобы заставить все эти средства работать неправильно или парализовать их работу. Содержит все уязвимости отладчиков реального режима обнаружение своего присутствия по потере прерывания . Пользовательский интерфейс крайне убогий, все управление только через командную строку отладчика. В настоящее время не применяется ни для отладки, ни для взлома программ. Даже при простейшем безусловном переходе в середину длинной команды не может ее корректно дизассемблировать при . Позволяет трассировать программу по шагам и по. Вполне пригоден для взлома программ, хотя для него и не предназначен. Не ловится противоотладочными приемами, основан. Однако у этого отладчика есть и серьезные недост . Программные средства защиты информации . Не ловится на потере . В качест прерывания точки останова по умолчанию использует . Трассиру программу с помощью ядра этого распаковщика, способного работать в реальном реж ме, защищенном режиме и режиме эмуляции процессора. Удобный пользовательсм интерфейс включает некоторые специфичные полезные возможности, например, пр смотр карты памяти. Уязвим для некоторых специфичных противоотладочных трюко основанных на архитектуре отладочной подсистемы процессора . Однако на самом деле уязвим для многих противоотладочных приемов, в том чиа основанных на потере . Некорректно задает начальные значения регистров. Существенный недостаток отладчик не может работать при загруженном менеджере памяти . Разработан Лиу Тао Тао на основе идей . Противоотладочными трюками, основанными на потере . Начальные значения регистров задает корректно. Нормально уживаетс с менеджерами памяти. Однако содержит и несколько специфичных багов, например, н может трассировать команду . Поддерживает большое количество аппаратных платформ, растущее от вер СИи к версии. Содержит встроенный интерпретатор скриптов, написанных на С . Полный программный ко, . Позволяет переименовывать адреса, вносить изме. нения в дизассемблированный листинг, вносить изменения в программу без перекомпи. Все изменения дизассемблированного листинга хранит в файле с именем исходного выполнимого файла и расширением . Выполнимый файл необходим для дальнейшей работы. Поддерживает многие компиляторы с языка Ассемблера. Содержит много предварительных настроек. Отлично находит перекрестные ссылки. Очень полезное свойство выдает в конце листинга сводку использованных программой прерываний и портов ввода. Программы просмотра Хакерские программы просмотра предоставляют многие возможности интерактивных дизассемблеров, но при этом для них не характерна длительная обработка исполнимой программы . На момент написания этого обзора последняя известная версия . Основные возможности программы . ; и редактирование битов в байте, слове или двойном слове по текущему смещению в файле В встроенная подсистема шифрования кода командой . Д Хакерские вьюверы обычно применяются для изменения кода ломаемой программы . Они годны и для полного исследования программ,. Во многом повторяет возможно. Также удобный пользовательский интерфейс. Понимает значительно больше форматов выполнимых файлов, чем . Автоматические распаковщики Программы автоматической распаковки предназначены для . Такие программы предназначены для . Кроме того, существуют более простые распаковщики, которые отслеживают последовательности байт для конкретных защит. Наконец, возможно отслеживать смену регистра . Распаковщик снимает с образа этого файла дамп . Самые совершенные на сегодня распаковщики это, безусловно, . Кроме того, есть несколько хороших распаковщиков, рассчитанных на борьбу с конкретными программами . Вспомогательные хакерские утилиты Кроме вышеперечисленных средств, хакеры используют для взлома программ разного рода вспомогательные утилиты. Борьба с автоматическими. Статический анализ кода может свести на нет все усилия по созданию противотрассировочной подсистемы. Просмотрев дизассемблированный текст программы, можно найти и обойти все механизмы защиты от отладки. Поэтому необходима реализация подсистемы защиты программы от дизас. Защититься от статического исследования. Возможны также различные комбинации этих способов. Для начала два примера перекрывающегося кода. И этот факт можно в дальнейшем использовать.