![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
"...использовать грубую силу — значит оказаться во власти гораздо более могущественных сил"
Ф. Херберт. "Дюна".
ВС реализует далеко не лучшую схему перехвата вызовов API- и DLL-функций. Это отличает его, например от продвинутых шпионов, перехватывающих на лету все функции загруженных приложением модулей. Причем последние даже не обязательно должны быть DLL-модулями. Например, IDA поддерживает пла-гины, которые представляют собой РЕ- или LE-файлы, экспортирующие определенные функции. A IDA в свою очередь предоставляет им собственный API.
Для исследования механизма взаимодействия последней и отладки своих собственных плагинов необходимо написать шпиона, отслеживающего протекающие "под капотом" процессы. ВС с такой задачей справится не может. Впрочем, это понятно и нареканий не вызывает. Разумеется, редкий инструмент общего применения идеально подойдет для произвольной узкоспециализированной задачи.
ВС будет бессилен и в том случае, если защитный механизм помещен в DLL (о которой парни из NuMega, естественно, не имели никакого представления) и интенсивно взаимодействует с изучаемым приложением. Задачей взломщика будет в первую очередь понять, какие функции выполняет защитная DLL и можно ли каким-либо образом эмулировать последние.
Если бы научить ВС "видеть" эту DLL, то никаких проблем бы не было и мы получили бы интересный протокол, раскрывающий все секреты защиты. К счастью, NuMega предусмотрела этот момент и снабдила пользователей инструментарием для поддержки "их собственных DLL". Понятно, что ВС не может с уверенностью сказать, ваша это DLL или еще чья-то. При перехвате ВС никак не изменит исследуемую DLL, а поэтому это действие не противоречит нашему законодательству.
Чтобы понять, как происходит подключение нестандартных DLL, нужно представить себе механизм перехвата экспортируемых ими функций. К сожалению, это очень емкая тема, для которой требуется отдельная книга; кроме того, она уже многократно и исчерпывающе освещалась. Поэтому ограничусь двумя словами. Для каждой перехватываемой DLL нужно построить определенную заглушку. ВС подменяет вызовы оригинальной DLL на "свои". При этом он полностью контролирует управление и передаваемые параметры. Разумеется, для этого должна существовать специальная база данных, которая содержит типы и допустимые параметры. Впрочем, последнее нас интересует меньше всего, ибо нам необходимо отметить сам факт вызова какой-то функции, и только. Это облегчит нам задачу написания "заглушки".
В нашем распоряжении большие возможности, так как можно внедрить любой мыслимый и немыслимый код, делающий практически любые операции и могущий содержать даже наш собственный интегрированный отладчик — или, по крайней мере, вызов внешнего, если нам не хватает времени и квалификации.
Однако написание заглушки — очень трудоемкий процесс, требующий определенных навыков и знаний. Впрочем, специалисты (а именно такой специалист подразумевается под словом "хакер") не боятся этих трудностей. Была бы только документация и хотя бы краткое описание. В том-то и беда, что его нет! Веселенькое начало нам обеспечила NuMega! Как же быть? Остается использовать мастера, который сгенерирует за вас весь код автоматически, на C++.
Работу мастера описывать я не буду. Скажу только, что она проста, и этот мастер, как любой другой, потребует от вас минимальных умственных и физических усилий. Разумеется, возможности выбора окажутся очень ограниченными, но, как бы то ни было, на финальном пункте появятся три файла — *.срр, *.h и *rnak. При этом откомпилировать это MS VC можно только с ручной правкой некоторых мест, что не приносит абсолютно никакого удовольствия и тормозит весь процесс.
По моему мнению пользоваться мастером стоит только ради пары-тройки примеров, а далее вы сможете писать свои собственные примеры уже без посторонней помощи. Предупреждаю: для некоторых, ранее не имевших дела с подобными вещами, задача окажется достаточно трудной, и для достижения поставленной цели потребуется много усилий, особенно если учесть, что в коде, сгенерированном мастером, очень много лишнего, мешающего пониманию сути.
Дата публикования: 2014-12-08; Прочитано: 216 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!