Blog. Just Blog

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

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

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

Первым делом забираем с офсайта дистрибутив. Устанавливаем, запускаем, смотрим. На первый взгляд все вроде работает, но при попытке, например, открыть новую вкладку результатов поиска, появляется сообщение о необходимости прогуляться в кассу.

Сообщение незарегистрированной версии
Сообщение незарегистрированной версии

Исполняемый файл упакован UPX, никаких дополнительных наворотов там нет, поэтому просто распаковываем его средствами самого упаковщика: upx -d Bit_Che.exe

Строка сообщения в файле
Строка сообщения в файле

В исполняемом файле легко находится строка сообщения незарегистрированной версии. Отправим распакованный файл в дизассемблер и посмотрим, где и при каких условиях эта строка задействуется.
  1. .text:004A7D79                 mov     ecx, [ebp-54h]
  2. ; Указатель на ячейку памяти
  3. .text:004A7D7C                 mov     edx, dword_6200C0
  4. .text:004A7D82                 cmp     word ptr [edx+ecx*2], 0FFFFh
  5. ; Если значение в памяти не равно 0FFFFh, то вывести сообщение
  6. .text:004A7D87                 jnz     short loc_4A7D9B
  7. .text:004A7D89                 mov     dword ptr [ebp-4], 4
  8. .text:004A7D90                 mov     word ptr [ebp-24h], 0FFFFh
  9. .text:004A7D96                 jmp     loc_4A7F16
  10. .text:004A7D9B ; --------------------------------------------
  11. .text:004A7D9B loc_4A7D9B:
  12. .text:004A7D9B                 mov     dword ptr [ebp-4], 6
  13. .text:004A7DA2                 mov     word ptr [ebp-24h], 0
  14. .text:004A7DA8                 mov     dword ptr [ebp-4], 7
  15. .text:004A7DAF                 mov     edx, offset aSorryButThisFe
  16. ; "Sorry, but this feature is disabled in "...
  17. .text:004A7DB4                 lea     ecx, [ebp-28h]
  18. .text:004A7DB7                 call    ds:__vbaStrCopy
  19. .text:004A7DBD                 mov     dword ptr [ebp-48h], 38h
  20. .text:004A7DC4                 lea     eax, [ebp-28h]
Тут берется DWORD из ячейки памяти по фиксированному адресу 006200C0, затем по этому адресу с определенным смещением считывается значение типа WORD, если оно равно 0FFFF, то программа считается зарегистрированной. Если посмотреть по перекрестным ссылкам с dword_6200C0 все участки кода, где эта ячейка памяти используется, то обнаружится 16 вхождений с проверками. Поскольку в программе используется онлайн-проверка регистрации, единственным вариантом решения будет патч.

Для патча надо определить, какая проверка выполняется первой и заменить ее на инициализацию ячейки памяти нужным нам значением. Первый этап выполняется в отладчике. Загружаем программу в отладчик, ставим хардварную точку останова с условием любого доступа на DWORD по адресу 006200C0.

Устанавливаем точку останова
Устанавливаем точку останова

Запускаем программу. Несколько раз точка останова сработает, но по коду это будут явно не проверки. Затем отладчик остановится на первой проверке:
  1. .text:004B9110                 mov     eax, [ebp-208h]
  2. .text:004B9116                 mov     ecx, dword_6200C0
  3. .text:004B911C                 movsx   edx, word ptr [ecx+eax*2]
  4. .text:004B9120                 test    edx, edx
  5. .text:004B9122                 jnz     loc_4B91B6
  6. .text:004B9128                 mov     dword ptr [ebp-4], 0CFh
Этот код надо пропатчить, заменив команду по адресу 004B911C на MOV word ptr [ecx+eax*2], 0FFFF и вписав после нее безусловный переход JMP loc_4B91B6:

Патчим файл
Патчим файл

Теперь вместо проверки программа будет принудительно переведена в зарегистрированный режим. Сохраняем изменения, запускаем.

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

В окне "О программе" поменялся значок и красуется надпись "Plus Edition", с панели инструментов пропала иконка доната. Теперь проверим функционал. Самый простой способ - попробовать открыть больше одной вкладки поиска.

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

Все работает, никаких ограничений больше нет. Цель достигнута. На мой взгляд очень странное решение делать платной программу для поиска пиратского контента.

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

Комментарии

Отзывы посетителей сайта о статье
Kemper (27.11.2018 в 09:35):
блин я то подумал что софт для поиска какойто новый))) - а так то да метёлка форева)))
ManHunter (27.11.2018 в 07:53):
Kemper, как видно на скриншотах, в качестве демонстрации работы программы я использовал поиск творчества двух популярных металл-групп - Metallica (в простонародье "Метла", "Метёлка") и Accept. На это и обратили внимание комментаторы, которые разделяют мои музыкальные вкусы.
https://ru.wikipedia.org/wiki/Accept
https://ru.wikipedia.org/wiki/Metallica
Kemper (27.11.2018 в 02:48):
чтот я отстал от прогресса) - меня конечно не обламывает найти то что мне надо на трекерах по старинке - но ху из "метелка" и "Accept"?
ManHunter (26.11.2018 в 20:26):
А метёлка что, не форева? :)
Lazy_Kent (26.11.2018 в 20:00):
Про Accept подпишусь. :)
brute (26.11.2018 в 18:05):
какая-то левая программа, ничего не находит, ничего не качает в отличие от.. других мест.. Поэтому её лечением даже заниматься не хочется.
Андрей (25.11.2018 в 05:42):
Accept forever!

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

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

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