Убираем рекламу из uTorrent
Скриншот программы uTorrent
Для пополнения своей видеотеки я уже давно пользуюсь бесплатным торрент-клиентом uTorrent, но вот уже два обновления подряд начали показывать рекламный баннер. Я, конечно, понимаю, что при такой популярности программы было бы странным не попытаться поиметь с нее бабла, но... Мне категорически не нравится реклама в программах в любом виде. Сейчас будем возвращать uTorrent его былое великолепие.
Скачиваем дистрибутив, устанавливаем, запускаем. Рекламный баннер в главном окне программы появляется не сразу же, а через некоторое время после запуска. Но его мерзость от этого ничуть не уменьшается. Посмотрим на исполняемый файл. Судя по названиям секций, он упакован UPX, однако сам UPX с распаковкой не справляется:
Файл не распаковывается UPX
Видимо дело в том, что к файлу после упаковки еще прикреплены сертификаты. Но с распаковкой прекрасно справляется универсальный распаковщик UPX от китайских товарищей.
Для борьбы с баннером надо узнать хоть что-нибудь о нем. Для этого воспользуемся моей программой WinDowzer, и с ее помощью узнаем, что название класса окна баннера "AdBar". Теперь надо поискать в исполняемом файле что-нибудь, связанное с этой строкой. В ресурсах ничего похожего нет, зато где-то в середине файла находится единственное вхождение искомой строки в юникоде:
Строка с названием класса окна
Следующий шаг - надо найти код, который ссылается на эту строку. Это, естественно, делается в дизассемблере, в который вы уже отправили распакованный файл. Еще не отправили? Тогда сделайте это незамедлительно. Нашему взору открывается длиннющая процедура:
Code (Assembler) : Убрать нумерацию
- .text:0047402F sub esp, 74h
- .text:00474032 push ebx
- .text:00474033 push esi
- .text:00474034 mov esi, ecx
- .text:00474036 xor ebx, ebx
- .text:00474038 cmp [esi+104h], ebx
- .text:0047403E jnz loc_4743D9
- .text:00474044 cmp [esi+10Ch], ebx
- .text:0047404A jnz loc_4743D9
- .text:00474050 cmp [esi+110h], ebx
- .text:00474056 jnz loc_4743D9
- .text:0047405C cmp [esi+114h], ebx
- .text:00474062 jnz loc_4743D9
- .text:00474068 push ebp
- .text:00474069 push edi
- ; Указатель на строку AdBar
- .text:0047406A push offset aAdbar ; lParam
- .text:0047406F push ebx ; wParam
- .text:00474070 push 0Ch ; Msg
- .text:00474072 push dword ptr [esi+4] ; hWnd
- .text:00474075 call ds:SendMessageW
- .text:0047407B mov ebp, 236h
- ...
Code (Assembler) : Убрать нумерацию
- .text:0047549D loc_47549D:
- .text:0047549D cmp eax, 808Ah
- .text:004754A2 jnz short loc_4754AB
- .text:004754A4 push edx
- .text:004754A5 call sub_47402F
- .text:004754AA retn
Окно ошибки
Было бы логично предположить, что после инициализации баннера с ним должны выполняться какие-то действия. А раз окно баннера не было создано, то попытки программы взаимодействовать с ним приводят к падению. Снова предположим, что раз код инициализации баннера равняется 808Ah, то код взаимодействия с баннером должен быть похожим. Как я говорил выше, прямо под блоком вызова инициализации есть похожий блок, в котором проверяется код, отличающийся от кода инициализации только на единицу:
Code (Assembler) : Убрать нумерацию
- .text:004754AB loc_4754AB:
- .text:004754AB cmp eax, 8089h
- .text:004754B0 jnz short loc_4754B9
- .text:004754B2 push edx
- .text:004754B3 call sub_474FBC
- .text:004754B8 retn
Code (Assembler) : Убрать нумерацию
- ...
- .text:00475279 call dword ptr [eax+4]
- .text:0047527C push eax
- .text:0047527D push [ebp+arg_0]
- .text:00475280 push offset aLadwindowRefre
- ; "\n--LAdWindow refreshing ad group %d for"...
- .text:00475285 call nullsub_2
- .text:0047528A mov ecx, [ebp+xLeft]
- .text:0047528D add esp, 14h
- .text:00475290 call sub_403145
- ...
Рекламного баннера больше нет
Сигнатура для патча уникальная и очень удобная для поиска, поэтому можно сделать что-то типа универсального лоадера или даже универсальный inline-патч. Главное, чтобы аффтары софта поняли, что так будет с каждым, кто захочет запомоить правильную программу своей поганой рекламой.
Просмотров: 22448 | Комментариев: 24
Метки: реверсинг
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Андрей
(08.01.2013 в 07:28):
Премного благодарен за распаковщик.
tester3000
(25.12.2012 в 02:25):
ManHunter, что-то проглядел я сначала теперь нашел =)
ManHunter
(24.12.2012 в 17:43):
Какие нафиг ветки. Меню "Настроки".
tester3000
(24.12.2012 в 17:42):
ManHunter, спасибо но что-то не нашел в какой ветке галочка >>Показать информацию plus.
Зато нашел в Preferences -> Advanced -> gui.show_plus_upsell поставил false и все исчезло.
Зато нашел в Preferences -> Advanced -> gui.show_plus_upsell поставил false и все исчезло.
ManHunter
(23.12.2012 в 17:02):
Настройки -> Показать информацию plus.
tester3000
(23.12.2012 в 16:57):
Недавно установил новую версию uTorrent 3.2.3 в настройках offers.left_rail_offer_enabled и offers.sponsored_torrent_offer_enabled поставил на false но слева реклама uTorrent Plus не исчезает. Как ее убрать подскажите плиз?
вот скрин если кто не понял про что я написал: www.imagebam.com/image/5c3727227390527
вот скрин если кто не понял про что я написал: www.imagebam.com/image/5c3727227390527
22
(23.12.2012 в 10:15):
вернее -
offers.left_rail_offer_enabled и
offers.sponsored_torrent_offer_enabled
offers.left_rail_offer_enabled и
offers.sponsored_torrent_offer_enabled
franken
(19.12.2012 в 00:51):
ManHunter, мы же не ищем легких путей )))
хирургия - всегда лучше терапии )
или "всё бы этим хирурга резать, а мы вот выпишем Вам таблеточки, само отвалиццо!" ))
хирургия - всегда лучше терапии )
или "всё бы этим хирурга резать, а мы вот выпишем Вам таблеточки, само отвалиццо!" ))
Kemper
(17.12.2012 в 03:08):
да! пускай region59 и приказал долго жить но дело живет ) ManHunter, как всегда в тему выручаешь ;)
[2 минуты спустя]
ааа!!! - 25 буду )))
[2 минуты спустя]
ааа!!! - 25 буду )))
Band
(07.12.2012 в 05:09):
Выключил рекламу как посоветовал ManHunter. Огромное спасибо!
Даниил
(25.11.2012 в 02:44):
Спасибо, Игорь. Не пришлось танцевать с бубном, оказалось рекламу можно убрать всего лишь через настройки.
The-hedgehog
(18.11.2012 в 15:07):
Спасибо за статью и граммотные коментария, самбо век искал)
lexxsimf
(18.11.2012 в 02:28):
Поскольку все проги используют движок IE, то направив его через локальный прокси, который ведет лог, можно вычислить адрес банера, и забаниь его. Незнаю, как другие, я весь инет во всех прогах настраиваю на локальный прокси, на нем веду черный список. Даже проверка активации windows блокируется и трафик слежения за пользователями касперского антивируса, что появился начиная с 2011-той версии... Сплошные плюсы. Еще можно в одной проге все остальное перевести на каскад другого прокси, если нет прямого интернета.
_sheva740
(15.11.2012 в 13:46):
>то код взаимодействия с баннером должен быть похожим.
Вот с этого места все самое сложное. Догадываться порой тяжело )))
Спасибо за статью.
Вот с этого места все самое сложное. Догадываться порой тяжело )))
Спасибо за статью.
катавасия
(13.11.2012 в 16:01):
В ответ на Игорь (06.11.2012 в 00:13):
Игорь, спасибо большое.
Игорь, спасибо большое.
ManHunter
(12.11.2012 в 18:29):
Ну не у всех же MacOS :)
zummenix
(12.11.2012 в 18:28):
А в версии для mac os нет рекламы :)
tester3000
(10.11.2012 в 12:29):
Большое спасибо за познавательную статейку.
ManHunter
(09.11.2012 в 21:01):
bigcatwar, я же просил в нетрезвом виде на сайт не заходить?
bigcatwar
(09.11.2012 в 18:35):
скок можно говорить нет слов вроде авось мне приснилось
vox13
(09.11.2012 в 11:53):
Пусть это и отключается в самой программе, за статью спасибо, полезно и познавательно. Не все проги предусматривают отключение рекламы, да и в торренте это запрятано в дополнительных настройках, что очевидно сделали чтобы не отключали рекламу все подряд.
Super_DJ
(06.11.2012 в 20:17):
Радикальные методы пусть и не нужны, но все равно спасибо.
ManHunter
(06.11.2012 в 08:52):
Игорь, спасибо! Действительно можно обойтись и без хирургии, обычной терапией :)
"Настройки" -> "Конфигурация" -> "Дополнительно" -> ключ
offers.sponsored_torrent_offer_enabled поменять на "Выкл" или false.
"Настройки" -> "Конфигурация" -> "Дополнительно" -> ключ
offers.sponsored_torrent_offer_enabled поменять на "Выкл" или false.
Игорь
(06.11.2012 в 00:13):
Эта реклама вроде отключается в самой программе.
Две настройки: left_rail_offer_enabled, sponsored_torrent_offer_enabled
выставить в FALSE и перезапустить программу.
Две настройки: left_rail_offer_enabled, sponsored_torrent_offer_enabled
выставить в FALSE и перезапустить программу.
Добавить комментарий
Заполните форму для добавления комментария
Комментарии отключены администратором сайта