Blog. Just Blog

Исследование защиты программы uTorrent

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы uTorrent
Скриншот программы uTorrent

Давно пользуюсь uTorrent в качестве торрент-клиента, хоть и появилось немало альтернатив, но это уже дело привычки. Тут решил обновиться до последней версии и обнаружил, что теперь интерфейс загажен неотключаемой рекламой, постоянно вылезают окна с предложением купить некую улучшенную версию, и вообще, отключаемая реклама старых версий теперь кажется милой шуткой. Но мне кажется, что со стороны аффтаров очень опрометчиво ожидать денег от людей, которые нахаляву качают с торрентов пиратские фильмы, софт и музыку. Вот и от меня они ни копейки не дождутся. А попутно я устраню еще пару появившихся в программе недостатков.

Окно незарегистрированной программы
Окно незарегистрированной программы

Исполняемый файл упакован UPX и подписан цифровой подписью, но теперь с распаковкой без проблем справляется сам UPX. Но перед распаковкой лучше отрезать цифровую подпись, чтобы в дальнейшем не было проблем с антивирусами. Посмотрим, за что можно зацепиться для начала исследования. Наиболее характерная строка, на мой взгляд, это "Pro". Раз уж нам так это навязчиво предлагают, то воспользуемся предложением, но только в своих целях.

Строка в файле
Строка в файле

Поиск по юникодной строке выводит нас вот к такому месту. Тут видна характерная строка "utPro", ниже какая-то хрень про активацию и все такое прочее. Стоит открыть файл в дизассемблере и посмотреть, где и как это все используется.
  1. ; Вызвать функцию проверки
  2. .text:005906A3                 call    sub_590680
  3. ; Если AL=0, то перепрыгнуть код, связанный с "Pro"-строкой
  4. .text:005906A8                 test    al, al
  5. .text:005906AA                 jz      loc_59073A
  6. .text:005906B0                 lea     ecx, [ebp-54h]
  7. .text:005906B3                 call    sub_65CB60
  8. .text:005906B8                 and     dword ptr [ebp-4], 0
  9. .text:005906BC                 lea     ecx, [ebp-28h]
  10. .text:005906BF                 push    offset aUtpro   ; "utPro"
  11. .text:005906C4                 call    sub_40A277
  12. .text:005906C9                 lea     eax, [ebp-28h]
Функция проверки находится сразу над ее вызовом.
  1. .text:00590680 sub_590680      proc near
  2. .text:00590680                 call    sub_590671
  3. .text:00590685                 sub     eax, 0
  4. .text:00590688                 jz      short loc_590693
  5. .text:0059068A                 dec     eax
  6. .text:0059068B                 sub     eax, 1
  7. .text:0059068E                 jz      short loc_590693
  8. .text:00590690                 xor     al, al
  9. .text:00590692                 retn
  10. .text:00590693 ; -----------------------------------------
  11. .text:00590693 loc_590693:
  12. .text:00590693                 mov     al, 1
  13. .text:00590695                 retn
  14. .text:00590695 sub_590680      endp
Элементарно, Ватсон. Патчим первый условный переход на безусловный, чтобы функция проверки всегда возвращала AL=1. Сохраняем изменения, запускаем.

Программа успешно "зарегистрирована"
Программа успешно "зарегистрирована"

Как мы видим, интерфейс заметно изменился. Пропали баннеры, ссылки с предложениями потратить бабло, а навязчивые окна больше не открываются. Основная цель достигнута. В принципе, на этом можно было бы и заканчивать.

Но после обновления обнаружился еще один косяк. По какой-то непонятной причине аффтары поменяли цвет фона строки списка, на которой стоит курсор. Раньше он был хорошо заметен, теперь же практически сливается с основным фоном окна. Настроек для изменения цвета я не нашел, поэтому опять придется прибегнуть к точечной хирургии. Для начала надо определить значение этого мерзкого цвета.

Определяем цвет фона
Определяем цвет фона

Воспользуемся программой Color Dropper. Как мы видим в окне программы, искомое значение фонового цвета - 0xF9EDE2, чтобы искать строку в листинге дизассемблера, надо чуток изменить значение на "0F9EDE2h". Найдется единственное вхождение.
  1. .text:0059A450 sub_59A450
  2. .text:0059A450                 mov     eax, 0F9EDE2h
  3. .text:0059A455                 retn
  4. .text:0059A455 sub_59A450      endp
Надеюсь, сами догадаетесь, что тут надо сделать. В том же самом Color Dropper выбираете цвет, который вам нравится, затем патчите uTorrent, заменяя найденное значение на нужное сочетание RGB.

Фоновый цвет изменен
Фоновый цвет изменен

Вот теперь совсем красота. Все основные недостатки устранены, цель достигнута. Надеюсь, что и следующие обновления uTorrent можно будет довести до ума описанным выше способом.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 2660 | Комментариев: 39

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
xussr (04.10.2017 в 10:34):
Все нашел
xussr (04.10.2017 в 10:17):
Хотел поменять цвет как тут выше изложено но так и не нашел оного значения
xussr (01.10.2017 в 09:32):
Единственно не работает стрим плеер и антивирс где искать концы?
xussr (01.10.2017 в 08:31):
Нет ничего невозможного вот в последней версии 3.5(44090)
CPU Disasm
Address   Hex dump          Command                                  Comments
00593C73  \.  C3            RETN
00593C74  /$  E8 ECFFFFFF   CALL 00593C65                            ; [uTorrent_unpacked.00593C65
00593C79  |.  83E8 00       SUB EAX,0                                ; Switch (cases 0..2, 2 exits)
00593C7C  |.  74 09         JZ SHORT 00593C87
00593C7E  |.  48            DEC EAX
00593C7F  |.  83E8 01       SUB EAX,1
00593C82      EB 03         JMP SHORT 00593C87
00593C84  |.  32C0          XOR AL,AL                                ; Default case of switch uTorrent_unpacked.593C79
00593C86  |.  C3            RETN
00593C87  |>  B0 01         MOV AL,1                                 ; Cases 0, 2 of switch uTorrent_unpacked.593C79
00593C89  \.  C3            RETN
00593C8A  /$  B8 25CA6700   MOV EAX,0067CA25                         ; Entry point
00593C8F  |.  E8 EC1C0900   CALL 00625980
00593C94  |.  83EC 74       SUB ESP,74
00593C97  |.  E8 D8FFFFFF   CALL 00593C74
00593C9C  |.  84C0          TEST AL,AL
00593C9E  |.  0F84 8A000000 JZ 00593D2E
00593CA4  |.  8D4D AC       LEA ECX,[EBP-54]
00593CA7  |.  E8 329B0C00   CALL 0065D7DE                            ; [uTorrent_unpacked.0065D7DE
00593CAC  |.  8365 FC 00    AND DWORD PTR SS:[EBP-4],00000000
00593CB0  |.  8D4D D8       LEA ECX,[EBP-28]
00593CB3  |.  68 C4B66D00   PUSH OFFSET 006DB6C4                     ; /Arg1 = ASCII "utPro"
00593CB8  |.  E8 9263E7FF   CALL 0040A04F                            ; \uTorrent_unpacked.0040A04F
00593CBD  |.  8D45 D8       LEA EAX,[EBP-28]
00593CC0  |.  C645 FC 01    MOV BYTE PTR SS:[EBP-4],1
xussrr (06.06.2017 в 21:16):
Уже не актуально в новой версии все не так просто!!!
Женя (02.05.2017 в 22:27):
Старые версии 2.1 и 2.2 работают на ура, нет смысла использовать новые.
ManHunter (02.02.2017 в 11:36):
Вспомнил, что мне не нравилось в старых версиях. Когда перемещаешь торрент по списку кнопками вверх-вниз, то каждый раз терялся фокус со списка, приходилось снова тыкать в список курсором. В новой версии с этим все нормально.
Maksovich (24.12.2016 в 22:36):
До сих пор пользуюсь версией 2.2 и не парюсь. По сути можно поискать самую последнюю версию которая идет без рекламы и ей пользоваться. Но мне в 2.2 нравится интерфейс. Все просто, никаких панелей лишних и ненужных функций.
Скриншот: http://i88.fastpic.ru/big/2016...0f66c7ff.png
АндрейК (15.12.2016 в 12:27):
Одно другому не мешает. Последовательная скачка файлов в наборе файлов, а также последовательное скачивание кусков файла помогают снизить нагрузку на диск. При этом вполне можно скачивать параллельно два торрента.
Если утрировать, то по дефолту ~64 дисковых потока, а при последовательном - лишь 2.Более того: не забываем про "track to track" у hdd и фрагментированности свободного места. В итоге wd green, сами по себе показывающие плачевные результаты многопоточной работы, при скачивании торрента (utorrent с дефолтными настройками) буквально захлёбываются.

Кратко: wd green для скачивания торрентов не очень хорошо подходят.

>хочется всё и сразу.
Вот и получается как в пословице про двух зайцев.
ManHunter (14.12.2016 в 22:42):
Совесть не мешает, просто один торрент тянется со скоростью 100 кб/с, второй разгоняется до 10 мб/с, а хочется всё и сразу.
АндрейК (14.12.2016 в 19:55):
>"оверлоады, особенно при параллельном старте нескольких объемных загрузок. "
Совесть мешает включить последовательную загрузку ?

Кстати, хороший повод повозится в отладчике для появления всех пунктов "дополнительно" что при нажатии shift+f2, что без этого.
Serg0FFan (13.12.2016 в 20:45):
Использую уже лет 5 версию 2.0.4 и вполне себе рад. Качает в разы быстрее все новых версий, никаких ошибок не выдаёт. Никакой рекламы нет. Только сразу надо отключить автообновление нафиг.
ManHunter (12.12.2016 в 18:35):
Повезло, наверное :) У меня тоже периодически вываливаются оверлоады, особенно при параллельном старте нескольких объемных загрузок.
АндрейК (12.12.2016 в 11:55):
Uncle V?der, почему у меня такого нет ?
Uncle Vёder (04.12.2016 в 11:33):
Основная проблема uTorrent даже не в рекламе, а в том, что он отвратительно работает с дисками. Стоит только обзавестись интернетом быстрее 50Мбит/с - и вас ждут постоянные просадки скорости и "cache overload". И никакие шаманства с настройками не помогают (пробовал и давать более жирный кэш, и наоборот вообще его отключать).
В итоге перешёл на qBittorrent.
user0 (01.12.2016 в 14:12):
Вот с кинозала ни разу не качал, рутрекера/порнолаба, ннм, да помойки вроде рутора вроде хватало.

ps. если будет желание еще ковырять utorrent, то может убрать строку поиска/фильтр и все иконки что справа от нее дабы когда делаешь окошко программы более компактным, вся эта ересь на налезала на ряд иконок слева.
ManHunter (01.12.2016 в 12:38):
Нормальные трекеры вроде бы отслеживают таких хитрожопых личеров и банят их. Помнится, на кинозале я решил себе немного рейтинг подкрутить, так тут же выпасли, объявили первое и последнее предупреждение.
user0 (01.12.2016 в 03:03):
>Мод pro
вах, от души )

"я тут подумал", сидя на 2ой патченой версии уже лет 5, а насколько вообще полезны/актуальны сейчас две модификации:

1) резать раздачу - основная идея не палиться копирастам с сидованием, если живешь заграницей (сейчас вроде поутихли страсти, но все же..). Хотя с этой проблемой отлично справляется тор.

2) не отдавать значения скачаного трекеру - было актуально на заре становления р2р. Теперь же расплодилось трекеров без регистрации, да и фри лич на многих с регистрацией в порядке вещей, каналы провайдеров опять же слегка потолще стали.
ManHunter (30.11.2016 в 17:06):
Мод pro, с измененным цветом, без иконок соцсетей, с нулевой загрузкой для трекеров:
http://rgho.st/8chp5TrBv
Реакция всяких говноантивирусов меня не интересует, так же как и последствия от использования мода. Есть сомнения - не качайте.
X-Wing Top Ace (29.11.2016 в 17:33):
ЦитатаПатчим первый условный переход на безусловный

Или нопим команду retn по адресу 00590692. ;)
ManHunter (29.11.2016 в 10:53):
Цитатане отдавать значения скачаного трекеру

фу таким быть :)

0049B95B xor ecx,ecx
0049B95D nop

0049B961 push ecx
0049B962 push ecx
0049B963 nop
user0 (29.11.2016 в 10:17):
А нет желания найти как отключить в новых версиях:
1) раздачу или
2) не отдавать значения скачаного трекеру (в версиях до 3ей занулялся "downloaded=%Ls")
ManHunter (29.11.2016 в 00:42):
ЦитатаБаннеры отключаются если в настройки - дополнительно

Обнови качалку до последней версии, затем попробуй до патча найти в настройках этот "offer".
Compiller (29.11.2016 в 00:36):
А где переход определяющий портативность программы?
Если utorrent запустить в папке с файлом settings.dat нулевого размера - он станет портативным. Можно этот момент тоже поправить на безусловный вариант?

Баннеры отключаются если в настройки - дополнительно ввести слово offer и все параметры переключить в false
Алексей (28.11.2016 в 17:44):
всё... получилось в hex-редакторе, хотя до этого всегда правил в отладчике и все было норм
ManHunter (28.11.2016 в 15:30):
Патчат в hex-редакторах, а не в отладчике.
ManHunter (27.11.2016 в 22:20):
00590688: jz short loc_590693 -> jmp short loc_590693
Алексей (27.11.2016 в 05:49):
меняю переход на безусловный, сохраняю, а реклама все равно остается...
Алексей (27.11.2016 в 05:34):
не работает уже этот способ...
ManHunter (26.11.2016 в 20:13):
Да любую версию вообще, они все работают. Какая понравится.
pawel97 (26.11.2016 в 18:57):
ManHunter, посоветуйте версию сабжа из личного опыта для повседневного пользования, а не ковыряния в дизасме и поиска сюрпризов. Мне не влом рекламу отключить патчем, но сама необходимость это делать не радует. Или хотя бы даже другим ставить, ещё чего доброго обновится сам и какой асктулбар при этом скачает...
Шурик (25.11.2016 в 17:18):
Спасибо за ответ(значит обновлять не буду), и за наводку, сначала не обратил внимания на предмет скачивания.
ManHunter (25.11.2016 в 10:23):
Еще есть "Стэн против сил зла" в озвучке хамстеров. Тоже типа Эша, такая же угарная жесть. Рекомендую.
Doxtur (25.11.2016 в 09:45):
ООО! Эш против Зловещих мертвецов, зачетный сериал, а второй сезон вообще напалм)))
ManHunter (23.11.2016 в 18:38):
Иконки убираются без проблем, обработчики копать нет желания.

00578BB6 push 0 -> push FF
00578C31 push 1 -> push FF

всплывающие подсказки и открытие ссылок подавляются обнулением соответствующих текстовых строчек.
Петр (23.11.2016 в 16:40):
А такой вопрос: можно как-то убрать всякие "г-фубуки", "г-твитеры" и прочие визуальные гадости с соответствующими обработчиками? Или, возможно, есть вариант с "изящным" мультипатчером?
ManHunter (23.11.2016 в 15:24):
Лично я ничего полезного не заметил.
Шурик (23.11.2016 в 15:22):
Прошу прощения за офтоп, сам давно не обновлял клиент. В новых версиях появилось что-нибудь полезное или необходимое, ради чего стоило бы обновить до актуальной версии?

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2017
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.19 сек. / MySQL: 2 (0.0061 сек.) / Память: 4.5 Mb
Наверх