Вообще-то я отнюдь не
хакер и без нужды в чужих программах не
ковыряюсь. Что касается тети Аси, то она
живет у меня на рабочем месте около 10 часов
в сутки, вот уже на протяжении хрен знает
скольких лет. И UIN мой шестизначный был
честно получен в свое время от Мирабилисов,
а не куплен или уведен с забытого Hotmail’а, и
количество народу в моем контакт листе уже
давно перевалило за полтинник. По
достоинству оценив 2000b, прежде всего за
диалоговый режим сообщений (эх, научились
бы они еще квотить :), я уже почти смирился с
появлением не всегда нужных наворотов и,
как следствие, разрастанием дистрибутива (винчестер
и каналы давно повзрослели, а ненужное
отключаем). Однако все оказалось не так
радужно.

Первым звоночком было
появление баннера имени SMS. Отследив
обращения Аси к АОЛ’овскому вебу я
обнаружил следующее. При каждом старте
следовало обращение к http://cb.icq.com/cb/463/ datafiles/datafiles.cb
(на тот момент у меня стояла Ася 4.63), который
содержал:

<field><name=url><type=string></field>
<field><name=path><type=string></field>
<field><name=date><type=string></field>
<field><name=time><type=string></field>
<item> <url=http://cb.icq.com/cb/463/datafiles/plugin.cb>
<path=plugin.fld><date=08-10-2000> <time=12:28:00></item>
<item> <url=http://web.icq.com/lib/image/0,,3105,00.gif>
<path=careers.BMP><date=12-02-2001> <time=04:28:00></item>
<item> <url=http://web.icq.com/lib/image/0,,3106,00.gif>
<path=wireless.BMP><date=12-02-2001> <time=04:28:00></item>
<item> <url=http://cb.icq.com/cb/463/datafiles/regupdat.cb>
<path=regupdat.xml><date=02-16-2001> <time=04:28:00></item>

После чего рекурсивно
выкачивались к файлы из тэга url, которые
затем переименовывались согласно тэгу path,
складывались локально и в дальнейшем
использовались, в зависимости от
расширения. Файл plugin.fld не выглядел
подозрительным — какие-то обновления
неиспользуемых мной плагинов 🙂 С
обновлением графики тоже вроде никаких
проблем. А вот regupdat.xml был первой неприятной
неожиданностью. На основании данных этого
файла тетя Ася патчила регистри. И, хотя в
данном случае патч был безобидным, сам факт
подобных действий внушал серьезные
опасения.

Дальше шло обращение по
адресу http://cb.icq.com/cb/463/datafiles/partner.cb, внутри
которого было:

<field><name=url>
<type=string></field>
<field><name=path> <type=string></field>
<field><name=date> <type=string></field>
<field><name=time> <type=string></field>
<item> <url=http://cb.icq.com/cb/463/partner/partner.cb>
<path=partner.xml> <date=12-02-2001><time=16:40:00></item>
<item> <url=http://web.icq.com/lib/image/0,,3019,00.gif>
<path=smsbig.bmp>< date=07-02-2001><time=18:40:00></item>
<item> <url=http://web.icq.com/lib/image/0,,3021,00.gif>
<path=smssmall.bmp> <date=07-02-2001><time=18:40:00></item>

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

Ну и финальным
штрихом было обращение к файлам http://cb.icq.com/ cb/463/datafiles/banners.cb
и http://cb.icq.com/cb/463/datafiles/

channels.cb, которое для версии 4.63 не приводило
к каким-либо видимым результатам, хотя я
подозревал, что banners.cb имеет
непосредственное отношение к начавшемуся
появлению баннеров в младших версиях 2000b и
2000a.

Итак, оставалось
выяснить, а какого собственно мы лазим в
partner.cb, datafiles.cb и прекратить это безобразие.
Ответ оказался довольно простым. Заглянув в
HKEY_CURRENT_USER\SOFTWARE\Mirabilis\ICQ\ DefaultPrefs\UpdatedFiles я
обнаружил там искомые ссылки + ссылку на
reader.cb, которого кстати на АОЛ’овском вебе не
оказалось 🙂 Оставалось только их
уничтожить и, на всякий случай, установить
ключики Transaction в положение No. После чего
удаление каталога
Partner стало безвозвратным, а заодно были
заблокированы апдейты регистрей, что само
по себе немалый результат с точки зрения
безопасности. Осталось дождаться появления
баннеров, на которые уже появились первые
жалобы у пользователей предыдущих версий, и
разобраться с неприятностями по мере их
поступления 🙂

Попутно я обратил
внимание на мелкую лажу АОЛ’ов с тэгом date в
приведенных выше файлах, на основании
которой они предполагали проводить апдейты.
Та вот, согласно <date=12-02-2001> создавался
файл с датой 2 декабря 2001 🙂 Путем обмана Аси
и подставления ей для апдейтов своих файлов
я убедился, что до нового билда
законопослушным пользователям пришлось бы
почти год терпеть рекламу SMS и еще раз
порадовался тому, что избавился от нее.

И вот, наконец-то настал
час Х и баннеры добрались до v4.63. Эти
изменения были инициированы новым форматом
получаемого из сетки banners.cb, который
выглядел вот так:

<root>
<item><URL> http://cf.icq.com/cf/ate/ads/url.htm</URL>
<plugin>false</plugin> <ID>4</ID> <extension>0</extension>
<dialogid>0</dialogid> <display> true</display><restrictions>
<param><name>TZ</name> <from>-8</from><to>-5</to></param>
</restrictions></item>
[..]
<item><URL>http://web.icq.com/client/ ate/ad-handler/0,,clsnd,00.htm</URL>
<plugin>false</plugin><ID>1</ID> <extension>0</extension>
<dialogid>0</dialogid><display> true</display></item>
<item><URL>http://web.icq.com/client/ ate/ad-handler/0,,clrcv,00.htm</URL>
<plugin>false</plugin><ID>1</ID><extension>0</extension>
<dialogid>1</dialogid> <display>true</display></item>
<item><URL>http://web.icq.com/client/
ate/ad-handler/0,,clsnd,00.htm</URL>
<plugin>false</plugin><ID>405</ID><extension>0</extension>
<dialogid>0</dialogid><display> true</display></item>
</root>

Вся эта радость
записывалась в файл my_uin.dat прямо по живому.
Для начала надо было это безобразие
прекратить. Однако в регистрях никаких
упоминаний о файле banners.cb обнаружить увы не
удалось. Дальнейшие поиски привели к файлу
ICQCore.dll, содержащему строчки
http://%s/cb/%d/datafiles/banners.cb?rand=%s%s и http://%s/cb/%d/ datafiles/banners.cb?%s.
Первой мыслю было забить это все 0-ми, однако,
по некоторому размышлению, с учетом того,
что это, очевидно, были строки форматного
вывода с подстановкой, я решил не создавать
потенциального сегфолта и просто поменял
местами %s и cb. В таком виде безусловно
попытки обновления были безуспешны, а
корректность работы модуля не нарушалась.
Расправившись с этой бедой оставалось
разобраться с проблемой что делать с уже
загаженными dat-файлами.

Так как до внесения
полученного апдейта Ася баннеров не
показывала, то изначально возникла мысль о
тщательной правке файла my_uin.dat. Но, к счастью
этого мусора оказалось слишком много и мне
стало лень ковыряться, да и патч красивый не
напишешь. Пришлось вернуться к изучению
ICQCore. Опираясь на ключевые слова ID, plugin, URL и т.п.
был установлен необходимый блок в котором я
и изменил название параметра URL. Этого
оказалось достаточно — исчезли и баннеры и
окошки из под них. Асталависта 🙂 Что
особенно приятно — такое решение не
повлияло на работоспособность встроенного
в Асю броузера, который используется в ней
во многих других местах по назначению. В
этом смысле, предлагаемое некоторыми
удаление соответствующих dll’ек
напоминает мне требование снести Нетшкаф
или Экплорер — они ведь тоже баннеры
показывать могут 🙂

Вот так и был написан
icqboff. Еще раз прошу прощение за Runtime 200 его
первой версии на машинах класса PII и выше —
под рукой на момент написания патча
оказался только старенький борландовый
паскаль 7.01, который просто не был заточен
под такую технику 🙂 На остальные версии Аси
была сделана экстраполяция вышеописанного
метода. Обновления выходили по мере
попадания ко мне соответствующих ICQCore.dll.

Вопрос пока закрыт.
Надолго ли — посмотрим.

P.S. Наверное стоит
аналогичным образом пропатчить ICQCore на
предмет запрета ходить за channels.cb. Ну и
естественно, следует помнить об установке
HKEY_CURRENT_USER\SOFTWARE\ Mirabilis\ICQ\DefaultPrefs Auto Update в
положение No. Лишним не будет.

ftp://ftp.webber.net.ua/pub/internet/chat/icq/icqboff.zip

Оставить мнение

Check Also

Конкурс хаков: пишем на PowerShell скрипт, который уведомляет о днях рождения пользователей Active Directory

В компаниях часто встречается задача уведомлять сотрудников о приближающихся днях рождения…