Начнем с того, что данное произведение никоим образом не претендует на абсолютную полноту и правильность, а посему – все, что по Вашему мнению не является правильным, Вы делаете тем способом, который нравится именно Вам (ну, можете и мне письмецо черкнуть… если замечание стоящее – исправим). По большому счету, эта статья не является самостоятельным произведением, а скорее, собирательным обзором, так что сразу хочу поблагодарить тех, чья информация была использована.
Для чего все это? «Это» предназначено для всех тех, кому интересен описываемый процесс, тем кто желает все делать сам и не пользоваться патчами от сторонних деятелей (вроде меня), а также просто – для общего развития J.
Что потребуется в работе. Я перечислю те программы, которые использую лично я – Вы можете юзать те продукты, которые Вам больше понравятся по тем, либо иным соображениям. Особенности использования софта и приемы работы целью статьи не ставились, так что, если у Вас недостаточно навыков – учитесь сами, благо информации на эту тему – масса.
В отличии от сэнсея Злого, я не пользуюсь исключительно HEX – редакторами, а большую часть работы привык делать с комфортом, поэтому прога №1 – это Restorator. Эту штукенцию применяем для обработки и придания нужного вида диалоговым окнам. Как правило, в паре с ресторатором я использую Resource Hacker – это, на самом деле не обязательно, просто удобнее часть операций делать то в одном, то в другом редакторе.
Теперь добрались и до HEX (т.е. шестнадцатеричных) редакторов. Ничего не имею против разномастной армии платных программных продуктов, из которых, мне, кстати, больше всего понравился WinHEX (большое количество функций, а отсюда и универсальность), однако сам использую небольшой бесплатный редактор отечественного производства HEX Edit (ищем сами, ибо информацией о домашней страничке сего продукта я не располагаю).
Первым делом начнем с уничтожения баннеров. Препарирование сабжа рассмотрим на примере ICQ 2003a pro #3799, т.к. на момент написания этот билд был самым новым, и следовательно - вызывающим самое большое количество вопросов у публики. Раз уж я выше упомянул господина Злюку, то не будем изобретать велосипед и обзор построим в аналогичной манере (надеюсь, этим я ничьи права не ущемлю).
Рис. 1
Как только происходит первый запуск ICQ, так сразу и возникает желание убить ЭТО – я имею ввиду баннер J, а также заодно – и строку Гугля (хотя некоторым, надо отдать должное – эта фиговинка понравилась). Тут то нам и пригодится HEX: находим строку:
Рис. 2
и делаем, чтобы стало так:
Рис. 3
Получаем Асю следующего вида (без баннера и Гугля):
Рис. 4
А вот так разбираемся с баннерами в окне сообщений. Ищем строку:
Рис. 5
И вносим вот такие изменения:
Рис. 6
Больше баннеры нас не беспокоят.
Теперь сделаем так, чтобы в ICQ стало возможным вводить многострочный пароль. Те, кто не знает что это такое и с чем его едят, не встревают и читают молча.
Запускаем Restorator и с его помощью открываем все тот же файл ICQ.EXE. Наша цель – найти окна диалога, в которых мы вводим пароль при запуске ICQ, а также – при удалении UIN с ЛОКАЛЬНОГО компьютера (а что - разве «анрег» уже заработал?! J).

Рис. 7
Нет ничего проще: первое окно числится в списке под номером 1007, второе – под номером 2070. Находим строку:
EDITTEXT 1353, 49, 54, 128, 13, ES_PASSWORD | ES_AUTOHSCROLL
P.S.: (цифры, выделенные красным, в окнах отличаются и приведены только для примера! Я изменил немного циферки, чтобы окошко стало чуть более компактным - мне так кажется немного красивее оригинала. Основная мишень - то, что выделено синим.)
и меняем текст на вот такой:
EDITTEXT 1159, 66, 46, 105, 12, ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN
Получаем:

Рис. 8
Заметили, что изменилось? Единственное замечание – теперь все символы пароля при вводе будут ВИДИМЫМИ. Увы – такова жизнь. Альтернативой данному способу может служить использование маленькой утилитки под названием 2String, с которой, я думаю, Вы сами разберетесь. При ее использовании необходимость проделывания фокусов с диалоговыми окнами, которые описаны в последнем пункте – отпадает.
Плавно подобрались к разбору вторго элемента пропатчивания, а именно:
Эта библиотечка содержит в себе большое различных количество диалогов, которые мы намерены разнести в пух и прах. Для чего: будем добиваться возможности ввода многострочных Name, Last Name, NickName, и прочего multiline – сброда J, заодно сделаем, чтобы можно было указывать в деталях вместо мыла любую абракадабру и ввод возраста вплоть до 255 лет (сам не знаю – для чего это).
Снова Restorator, только теперь открываем ICQifDg.dll и прямиком направляемся в раздел с диалоговыми окнами. Все происходит в точности, как в ICQ.exe. Все, НУЖНЫЕ Вам окна ввода текста коректируются следующим образом:
Строка
ES_AUTOHSCROLL заменяется на:
ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN
Поля для ввода деталей, приобретают вот такой вид:

Рис. 9
Номера диалогов, в которые придется влезть со скальпелем, отмечены синим ярлычком:

Рис. 10
Разумеется, ICQ, как правило, начнет морочить голову устрашающими сообщениями после того, как вы попытаетесь ввести вместо e-mail что-то вовсе на мыло непохожее, например:

Рис. 11
Ерунда! Это вовсе не так страшно! Нам снова понадобится HEX редактор. Ищем в ICQIfDg.DLL строку:
![]()
Рис. 12
и приводим ее к виду:
![]()
Рис. 12
Тоже самое проделываем со строкой:
![]()
Рис. 14
![]()
Рис. 15
Это все. Больше никаких Not a valid!
Теперь сделаем самое интересное – постараемся вернуть ICQ возможность показывать IP-адрес пользователей из контакт-листа, как это было в версиях до 99b включительно.
Процедура:
1. Restoratorом (или даже Resource Hackerом, т.к. в нем это, на мой взгляд делать удобнее) открываем ICqIfDg.DLL;
2. Если используем Restorator, то ищем строки вида:
EDITTEXT 1380, 214, 11, 60, 14, ES_CENTER | ES_MULTILINE | ES_READONLY | NOT WS_VISIBLE | NOT WS_TABSTOP
и
LTEXT "Current / Last IP:", 2035, 142, 13, 71, 8, NOT WS_VISIBLE
И удаляем то, что выделено красным;
3. Сохраняемся и закрываем Restorator;
4. Открываем ICqIfDg.DLL в HEX-редакторе и ищем строки:
![]()
Рис. 16
Корректируем их, чтобы получилось следующее:
![]()
Рис. 17
Теперь мы имеем IP в деталях пользователя… Ха-ха! «имеем», блин... J
![]()
Рис. 18
А вот для того, чтобы получить весьма сомнительную радость от возможности ввода в деталях возраста вплоть до 255 лет включительно, нужно проделать следующее:
Открываем Restoratorом диалог 8504 в ICqIfDg.DLL и ищем следующие строки:
EDITTEXT 1384, 140, 31, 26, 12, ES_CENTER | ES_READONLY | ES_NUMBER | WS_DISABLED
и
EDITTEXT 1219, 164, 65, 25, 12, ES_CENTER | ES_READONLY | ES_NUMBER | NOT WS_TABSTOP
то, что выделено красным - удаляем! После этого можно будет вручную ввести в полях, для ввода возраста то число, которое вам нравится. Главное - это, чтобы оно не выходило за пределы 250-летнего возраста (или 1753 г.р.). ICQ, скорее всего такой расклад не устроит и она выдаст возмущенный вопль вида:

Рис. 19
но это не страшно - инфа должна сохраниться, не пугайтесь - просто мирабы не могут поверить в то, что такая продолжительность жизни возможна J.
P.S: По последним (непроверенным) данным такой древний возраст блокируется на сервере мирабов. Иначе говоря - данные в инфо не сохраняются. Это уж, кому нужно, проверяйте сами...
В этой библиотечке нам понадобится изменить совсем немного:
Вновь меняем:
ES_AUTOHSCROLL
на ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN
в диалогах, отмеченных синим ярлычком:

Рис. 20
Это, так сказать, вспомогательные окна: подтверждение пароля и изменение e-mail в деталях пользователя. Лучше разобраться с ними сразу, чтобы потом не было мучительно больно. Да, чуть не упустил еще один момент: в диалоге 1001 лучше не удаляйте параметр ES_PASSWORD. Теперь все.
Аналогично обстоят дела и с библиотекой ICQReg.dll
В этой библиотеке нас интересуют два диалоговых окна:

Рис. 21
8529 – исправляем пресловутую строку ES_AUTOHSCROLL на
ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | ES_PASSWORD. Это даст возможность регистрировать ICQ с мультилайн паролем. Речь идет об уже имеющемся у Вас UIN.
8556 – аналогично предыдущему пункту. Только в этот раз мультилайн пароль добавляется при регистрации нового UIN в системе ICQ. Заодно можно подкорректировать окна для ввода многострочных Name, LastName, NickName (вдруг пригодится).
Осталось разобраться с возможностью поиска UIN, начиная с 1 и поиска по любому E-mail. Действуем:
Рассказываю коротко, т.к. операции все однотипные и ранее уже рассматривались:
Изменяются окна, отмеченные синим ярлычком.

Рис. 22
(ES_AUTOHSCROLL меняем на ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN во всех окнах ввода текста, которые Вам нужны, т.е. Ник-Имя-Фамилия-Мыло)
Получаем возможность задать поиск по многострочному имени-фамилии-нику-e-mail.
Чтобы ICQ не тявкала на нас сообщениями об ошибке, открываем всю ту же ICQSearc.dll в HEX-редакторе и изменяем строчку:
![]()
Рис. 23
Вот таким образом:
![]()
Рис. 24
Точно также поступим и со следующими строчками:
![]()
![]()
Рис. 25
![]()
![]()
Рис. 26
Ася больше не имеет ничего против бредовых диапазонов и мыл, такие вот дела.
Теперь небольшая отсебятинка:
Попробуем немного приукрасить нашу «асю». Небольшой экскурс по внутренностям. Что чаще всего спрашивают? Вот это: «Как сменить картинку при запуске?», «Как добавить свое имя в строчке, рядом с верхними кнопками?» и «Как добавить свою картинку в окно Help->About?»
Приступим:
1. «Картинка при запуске ICQ» - эта прелесть находится в файле ICQMcDgs.dll, номер битмапа 1061. Бегущая строчка «Loading» располагается в этой же библиотеке ICQMcDgs.dll, но в битмапе 1062 в виде набора последовательных кадров.
2.
Надпись «ICQ 2003a»
располагается в файле ICQ.exe
в битмапе с номером 2226. Можете вставить вместо нее все, что
Вам понравится. Например, мой логотип:
J

Рис. 27
3. Картинка в About – опять ICQ.exe, но в этот раз номер битмапа 2034.
Таким образом можно поменять практически все изображения в ICQ.
Единственное замечание – старайтесь выдерживать размеры оригинальных картинок. Ничего страшного при небольших отклонениях от оригинала не произойдет, но, как мне кажется, нужно учитывать чисто эстетический момент . Лично мне, например, неприятно, когда у меня перед лицом находится надпись, часть которой скрыта за пределами виндусового окна.
Теперь, когда вся (у меня, по крайней мере) ручная работа подошла к финалу, неплохо было бы избавить себя от такой мороки в дальнейшем... а вдруг понадобится переустановить асю! Есть выход: сейчас развелось огромное количество программ-патчмейкеров. Лично я использую ClickTeam Patchmaker. В результате сравнения файлов до пропатчивания и после оного, получаем небольшой *.exe файлик, при помощи которого вся суета, которой была посвящена эта статья производится за считанные секунды, но это уже выходит за рамки статьи... занимайтесь этим сами или ждите, когда у меня начнется очередной загон по написанию мануалов! J
На данный момент это все, что касается пропатчивания. Все дополнения и сообщения о замеченных ошибках – приветствуются. Изложение несколько сумбурное, но это пока что первый «рабочий» вариант статьи (хотя... возможно, что и последний). И не забудьте - если вдруг потребуется восстановить асю в том виде, в каком она была первоначально, нужно всего-навсего все сделанные нами изменения проделать в обратном порядке (это на тот случай, если дистрибутив недоступен, а бэкап сделать сразу не додумались J)
Возможно, вскором времени будет готов черновик по особенностям национальной правки реестра в части, касающейся ICQ. Почаще заглядывайте на индекс ASECHKA.RU, если Вам это интересно.
Удачи!
24.01.2003 14:52
При перепечатке или размещении на своем сайте ссылка на ASECHKA.RU обязательна. А еще лучше - свяжитесь со мной. Это поможет избежать ненужных недоразумений.
Если Вы обнаружили ошибку или неточность в тексте, либо (о, ужас!) неверное описание процедуры пропатчивания – пожалуйста, свяжитесь со мной. Ошибка будет немедленно устранена (после соответствующего изучения и обсуждения, разумеется).