Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #73, ЯНВАРЬ 2005 г.

Рандеву с Мирандой

Николай «GorluM» Андреев

Хакер, номер #073, стр. 073-112-1


(gorlum@real.xakep.ru)

Пишем спам-плагин для Miranda IM

Ася была, безусловно, замечательной девушкой, просто немного полноватой и капельку ленивой. Сидела себе, ничего не делала, а ресурсы жрала. Хотя нет, вру, кое-что она все же делала - она рекламу показывала и противно гудела при загрузке. С каждой новой версией рекламы и гудения только прибавлялось, толку - нет. Конечно, подобная ситуация недолго устраивала любителей пообщаться online, поэтому с первым же легким клиентом все пересели на него. Им оказалась Миранда. Стройненькая девушка IM с аккуратным открытым исходным кодом и поддержкой плагинов, о разработке которых я и расскажу тебе в этом материале.

Миранда стала такой популярной именно за счет плагинов, расширяющих ее функциональность. С их помощью обыкновенный легкий ICQ Client без труда превращается в мультипротокольного монстра со встроенным разговаривающим ботом и http-сервером и клиента для онлайн-шахмат по совместительству. «Все это безумно хорошо и невероятно занимательно, но каким боком это относиться к нам, хакерам?» - спросишь ты. Я мог бы начать разглагольствовать, что хакерам ничто человеческое не чуждо и они тоже сидят в аське, но не стану :). Дело в том, что Миранда - это отличный темный уголок, где может спрятаться творение злого хакерского гения. Смотри: любой пользователь Миранды наверняка добавил ее в список доверенных приложений в файрвол, иначе как бы он смог общаться - раз. Плагин Миранды не создает дополнительного процесса, а использует miranda32.exe - два. Встроенные в Миранду сервисы позволяют без труда послать/принять любое сообщение, не утруждаясь при этом изучением тонкостей протокола Oscar, - три. Миранда обычно постоянно загружена, когда юзер в Сети - четыре. Лучшего места для трояна просто не придумать!

Конечно, Миранда стоит далеко не на каждом компьютере, но если планировать направленный взлом/заражение, то разработка плагина для Миранды - оптимальное решение, не обдумать подобный ход было бы непростительным упущением со стороны хакера-профессионала.

Плагин с программистской точки зрения

Плагин - это модуль программы, расширяющий ее функциональность. Чаще всего плагин реализуется в виде динамической библиотеки (DLL), и это, как оказывается, невероятно удобно. Во-первых, DLL легко подгружается к программе - одна только функция нужна :). Во-вторых, для экспортирования функциональности модуля нужно всего лишь добавить ряд заранее обусловленных функций в таблицу экспорта. Обычно это функции загрузки и инициализации плагина (Load), выгрузки (Unload) и получения информации о плагине. Как тебе известно, для экспортирования нужно всего лишь добавить пару ключевых слов перед описанием функций - халява! Программа же для поддержки плагинов должна всего лишь просканировать какую-нибудь заданную в настройках директорию на предмет файлов с расширением dll, а у найденных файлов посмотреть экспортируемые функции и убедиться в сходстве с условленными. После этой процедуры она сможет просто передать управление одной из функций для использования встроенного в модуль кода. Но одним кодом DLL сыт не будешь, библиотеке нужно как-то использовать возможности ядра программы. Для этого аргументом одной из экспортируемых функций (Load) должна служить структура, в которой содержались бы адреса функций ядра, - плагин по мере необходимости будет извлекать из структуры адреса функций и использовать их по назначению.

Содержание  Вперед на стр. 073-112-2
<<< НАЗАД ||| ГЛАВНАЯ