КулЛиб - Классная библиотека! Скачать книги бесплатно
Всего книг - 710618 томов
Объем библиотеки - 1389 Гб.
Всего авторов - 273938
Пользователей - 124929

Новое на форуме

Новое в блогах

Впечатления

Михаил Самороков про Мусаниф: Физрук (Боевая фантастика)

Начал читать. Очень хорошо. Слог, юмор, сюжет вменяемый.
Четыре с плюсом

Рейтинг: +2 ( 2 за, 0 против).
Влад и мир про Д'Камертон: Странник (Приключения)

Начал читать первую книгу и увидел, что данный автор натурально гадит на чужой труд по данной теме Стикс. Если нормальные авторы уважают работу и правила создателей Стикса, то данный автор нет. Если стикс дарит один случайный навык, а следующие только раскачкой жемчугом, то данный урод вставил в наглую вписал правила игр РПГ с прокачкой любых навыков от любых действий и убийств. Качает все сразу.Не люблю паразитов гадящих на чужой

  подробнее ...

Рейтинг: +2 ( 2 за, 0 против).
Влад и мир про Коновалов: Маг имперской экспедиции (Попаданцы)

Книга из серии тупой и ещё тупей. Автор гениален в своей тупости. ГГ у него вместо узнавания прошлого тела, хотя бы что он делает на корабле и его задачи, интересуется биологией места экспедиции. Магию он изучает самым глупым образом. Методам втыка, причем резко прогрессирует без обучения от колебаний воздуха до левитации шлюпки с пассажирами. Выпавшую из рук японца катану он подхватил телекинезом, не снимая с трупа ножен, но они

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).
desertrat про Атыгаев: Юниты (Киберпанк)

Как концепция - отлично. Но с технической точки зрения использования мощностей - не продумано. Примитивная реклама не самое эфективное использование таких мощностей.

Рейтинг: +1 ( 1 за, 0 против).
Влад и мир про Журба: 128 гигабайт Гения (Юмор: прочее)

Я такое не читаю. Для меня это дичь полная. Хватило пару страниц текста. Оценку не ставлю. Я таких ГГ и авторов просто не понимаю. Мы живём с ними в параллельных вселенных мирах. Их ценности и вкусы для меня пустое место. Даже название дебильное, это я вам как инженер по компьютерной техники говорю. Сравнивать человека по объёму памяти актуально только да того момента, пока нет возможности подсоединения внешних накопителей. А раз в

  подробнее ...

Рейтинг: +1 ( 1 за, 0 против).

Техника отладки приложений без исходных кодов (Статья о SoftICE) [Крис Касперски] (fb2) читать постранично


 [Настройки текста]  [Cбросить фильтры]

Крис Касперски ака мыщъх ТЕХНИКА ОТЛАДКИ ПРИЛОЖЕНИЙ БЕЗ ИСХОДНЫХ КОДОВ

Введение в отладку

Отладчик — невероятно мощный инструмент в руках взломщика, однако к нему нужен свой подход. Большинство начинающих хакеров начинает отлаживать программу с точки входа и… умирает в цикле выборки сообщений. Пошаговое исполнение программы (также называемое трассировкой) — слишком трудоемкий и крайне неэффективный процесс. Событийно-ориентированные приложения (а к ним относятся практически все Windows-приложения) так не отлаживаются. Допустим, мы трассируем MFC-приложение, доходим до вызова AfxWinMain и… оказываемся глубоко внутри MFC42.DLL, откуда уже и вызывается весь пользовательский код, но прежде чем трассировка доберется до него, мы успеем состариться!

Но ведь отлаживать всю программу целиком совершенно необязательно! Опытные хакеры трассируют только отдельные части защитного кода. Но как же мы найдем его в миллионах машинных инструкций исполняемого файла? Существует множество методик: точки останова, раскрутка стека, перекрестные ссылки, условная трассировка, прямой поиск паролей/серийных номеров в памяти и т. д. Расскажем обо всем этом поподробнее.

Мы будем курочить программу Drive LED от компании O&O Software, 30-дневую демонстрационную версию которой можно скачать с сайта: http://www.oo-software.com/en/download/index.shtml;

Дизассемблер и отладчик в одной упряжке

Дизассемблер содержится в каждом отладчике (мы же ведь не собираемся отлаживать программу непосредственно в машинном коде, верно?), но тот дизассемблер, что находится внутри soft-ice или OllyDbg, слишком примитивен и ненагляден. IDA PRO намного мощнее. Она автоматически распознает имена библиотечных функций, определяет типы локальных переменных и делает множество других полезных вещей — в частности, позволяет комментировать листинг и назначать символьные метки для инструкций и данных. Исследовать защищенные программы с ее помощью — настоящее удовольствие. Однако вызовы типа call [ebx+64h] приводят хакеров в бешенство, особенно если функция вызывается из различных мест с различным ebx. На выяснение значения ebx в дизассемблере можно ухлопать целый день, а в отладчике просто «подсмотрел» его и все!

Или вот вызывается что-то по адресу 77E92B8D, лежащим где-то внутри операционной системы (при дизассемблировании дампов памяти такие адреса встречаются сплошь и рядом). В отладчике достаточно просто дать команду «u 77E92B8D» и мы тут же увидим, что это CreateFileA.

Бессмысленно спорить, кто круче — отладчик или дизассемблер. Эти инструменты взаимно дополняют друг друга. Реконструкцию алгоритмов лучше поручить дизассемблеру, а все непонятные места уточнять в отладчике.

Загрузка символов в отладчик осуществляется довольно противоестественным образом, на котором спотыкаются многие начинающие.


Рисунок 1. Загрузка символьной информации в loader32.

Сначала исследуемый файл пропускается через ИДУ. Затем, в меню «File» выбирается пункт «Produce output file —> Produce MAP file» (причем имя MAP-файла должно совпадать с именем самого дизассемблируемого файла). В появившемся диалоговом окне взводим все три галочки: Segmentation information (информация о сегментах), Autogenerated names (автогенерируемые имена) и Demangle names (размагленные имена). Полученный MAP-файл скармливается утилите idasym (которую можно скачать с сайта www.idapro.com) и конвертируется в sym-формат. Под воздействием утилиты nmsym, входящей в комплект поставки soft-ice, sym-файл преобразуется в nms. Уф! Половина работы сделана — теперь, пока запускается NuMega Symbol Loader можно и передохнуть. В меню File выбираем пункт Open, открываем nms-файл и говорим Module —> Load (загрузить). Появившаяся надпись «Symbols for C: \TEMP\SIMPLE.NMS successfully loaded» говорит о том, что все прошло успешно. Теперь можно открыть и сам исполняемый файл (File —> Open и Module —> Load).

Сравните, как выглядит экран отладчика с символами и без:


Рисунок 2. Отладка файла без символьной информации.

Рисунок 3. Отладка файла с символьной информацией, автоматически сгенерированной IDA PRO.

Без символьной информации назначение функций 401234h и 401124h совсем не очевидно и на их отладку можно угробить несколько часов лучших лет своей жизни, а с символами все ясно и так. К тому же, символьные имена можно использовать в точках останова, например: «bpx _fgets» (установить точку останова на функцию чтения пароля) или «bmp aMygoodpassword» (установить точку останова на код, обращающийся к эталонному паролю).

Точки останова на API-функции

Точки останова (они же break point'ы или просто бряки) — основное оружие хакера в борьбе с защитными механизмами. Наибольшей популярностью пользуются точки останова на API-функции. Чтение содержимого окна часто (но не