Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

BoundsCheck OverView



"Покажите мне пример совершенно гладко иду­щей рутины и я найду вам того, кто прикрывает ошибки." Ф. Херберт. "Дом Глав Дюны".

BoundsChecker фирмы NuMega (далее просто ВС) — это инструмент, прежде всего нацеленный на поиск ошибок в вашем собственном программном обеспече­нии. Однако он подходит и для исследования взаимодействия приложений с операционной системой или другими приложениями, поступившими в ваше распоряжение без исходных кодов.

Что представляет собой ВС? Отладчик или дизассемблер? Ни то ни другое. Это \Уш32-шпион. Обычные шпионы (типа Spyxx из MS VC) перехватывают только сообщения, которыми приложение обменивается с окном. Учитывая, что архитектура Windows фактически полностью построена на сообщениях, перехват последних несет достаточно полную информацию о происходящих событиях. Полную, но увы, не исчерпывающую. Множество функций вообще не генерируют сообщений (например, выделение памяти, чтение из файла или реестра).

Между тем именно эта информация имеет первостепенную важность при анализе приложения. MicroSoft, однако, отделывается молчанием по этому пово­ду. Написав блестящего шпиона сообщений, она вряд ли даже помышляет об API-шпионе. Это наводит многих на мысль, что API-шпионы штука не простая и их написание доступно не каждому.

На самом деле это не такое сложное занятие, и Мэтт Питрек в своей книге подробно описывает этот процесс во всех тонкостях, прилагая на дискете в качестве иллюстрации довольно неплохого шпиона, занимающего в упакованном виде чуть больше 7 килобайт.

ВС же — это десятки мегабайт сложного кода, который ненамного хитрее созданного Питтреком; он разве что покрывает больший круг задач. По крайней мере, поработав с версией 5.0, можно прийти к выводу, что нет ничего лучше собственных шпионов, специализированных применительно к интересующему вас кругу задач. И все же ВС не совсем то, что нужно хакеру. Очень много в нем недостает: в частности, нет никакой системы навигации по его протоколам. Нет и никакого фильтра функций, так что вам предстоит тяжелая археологическая работа: отыскивать нужные имена среди бесконечных вызовов GetMessage/Tran-slateMessage/DispathMessage и им подобных. Так же обстоит дело и с сообще­ниями — километрами листингов, в основном не представляющих для хакера в данный момент ничего интересного. Spyxx имеет гибкую систему фильтров, которая сокращает протоколы и заметно ускоряет анализирующий выходные файлы ВС. Разумеется, написание его целиком ляжет на ваши плечи и может оказаться не слишком простой задачей (особенно если требуется не просто фильтр, а очень хороший фильтр — с гибкой системой поиска). Однако время, затраченное на разработку внешнего фильтра с лихвой окупится ускорением анализа программ.

К недостаткам ВС можно отнести также невозможность анализа самозагружа­емых модулей, крайнюю неустойчивость к приложениям, пытающимся "прибить" ВС, а так же отсутствие поддержки 16-разрядных приложений и DLL. Последнее особенно неприятно. Но ничего не поделаешь. Пишите собственных шпионов или довольствуйтесь тем, что есть сегодня на рынке.

Вышесказанное не означает, что я призываю отказаться от ВС. Вовсе нет! Это действительно очень мощный инструмент, в настоящее время не имеющий аналогов. Но нужно четко представлять, для решения каких задач он полезен. Часто более быстрый путь — использование дизассемблера или отладчика.

Не стоит пытаться "перетянуть" одеяло и решать ВС-ом те задачи, для которых он, мягко выражаясь, не совсем предназначен. Строго говоря, ВС даже и не может работать в одиночку. Его назначение — показать вызовы API-функций и сообщений в изучаемом приложении. Для чего может понадобиться эта информация?

Рассмотрим случай, когда программа, считывающая строку из окна редакти­рования, не вызывает ни GetWindowText, ни GetDIgIternText, и даже не посылает сообщения WM_GETTEXT. Чтобы понять, как текст все же попадает в буфер, надо проанализировать манипулирующий с ним код. Т.е. пройтись дизассембле­ром по нужному участку кода. Но тут вся проблема в том, что мы не знаем, какой код "нужный", и в поисках последнего рискуем потерять уйму времени.

В этом случае ВС, показывая все вызовы API и связанных DLL, наверняка покажет и те, которыми приложение считывает текст. Это может быть посимволь­ное чтение клавиш или еще что-нибудь. Конечно, будет большой проблемой найти эти функции и в протоколе (так как он наверняка будет иметь немалый размер, сравнимый, может быть, даже с листингом дизассемблера) — при изучении последнего придется порядком попотеть.

ВС поможет также при исследовании приложений на предмет недокументи­рованных функций и возможностей. Или документированных, но плохо понятных. Например, если работа Менеджера Задач вам кажется сплошной загадкой, а дизассемблировать его, естественно, не хватает времени и терпения, можно запустить API-шпиона и посмотреть, какие функции приложение вызывает.

Заметим, что те же функции можно узнать простым просмотром таблицы импорта, но при этом останется загадкой порядок их вызова и взаимодействие друг с другом. Вот тут и следует использовать шпиона. В противном случае более эффективными окажутся отладчик + дизассемблер. Разумеется, ВС также неза­меним и при исправлении ошибок в чужих приложениях без исходных текстов (он, собственного говоря, для этого и разрабатывался).





Дата публикования: 2014-12-08; Прочитано: 313 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...