Blog. Just Blog

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

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

Программа Clear Memory, как можно догадаться из названия, предназначена для очистки оперативной памяти компьютера и, как заявлено на офсайте, каким-то образом она оптимизирует работу приложений в Windows. Полезность программы, а также соответствие ее заявленным параметрам я оставляю на совести разработчика, а вот с желанием шароварщиков нарубить бабла я мириться не могу.

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

Окно активации программы
Окно активации программы

Ну это уже ни в какие ворота не лезет. СМС с телефона я отправляю только любимой жене, и уж тем более никогда не отправлю СМС ни на один короткий номер. Да и вообще, как быть владельцам зарубежных телефонов? Короче, это реальный косяк и сейчас мы его будем давить.

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

Вкладка "О программе"
Вкладка "О программе"

Ну раз есть демо-режим, значит должен быть и нормальный полноприводный. Для начала поищем строчку "Demo" в распакованном файле. Никаких сюрпризов, все на виду. Оказывается, режим без ограничений по терминологии автора называется "Personal".

Нехорошая строка найдена
Нехорошая строка найдена

Вы ведь не забыли сразу же отправить распакованный файл в дизассемблер? Отлично, посмотрим в дизассемблере на код, где используются строчки о демонстрационной и полной версии.
  1. CODE:004B3C98                 push    ebx
  2. CODE:004B3C99                 mov     ebx, eax
  3. ; По умолчанию установить текст "Demo"
  4. CODE:004B3C9B                 mov     edx, offset _str_1_0_0_Demo.Text
  5. CODE:004B3CA0                 mov     eax, [ebx+3C0h]
  6. CODE:004B3CA6                 call    @Controls@TControl@SetText
  7. ; Controls::TControl::SetText(System::AnsiString)
  8. CODE:004B3CAB                 xor     edx, edx
  9. CODE:004B3CAD                 mov     eax, [ebx+3ECh]
  10. CODE:004B3CB3                 call    unknown_libname_554
  11. CODE:004B3CB8                 mov     dl, 1
  12. CODE:004B3CBA                 mov     eax, [ebx+3F0h]
  13. CODE:004B3CC0                 call    @Controls@TControl@SetVisible$qqro
  14. ; Controls::TControl::SetVisible(bool)
  15. CODE:004B3CC5                 mov     eax, ds:off_4B6F2C
  16. CODE:004B3CCA                 mov     eax, [eax]
  17. CODE:004B3CCC                 call    sub_4B022C
  18. CODE:004B3CD1                 test    al, al
  19. CODE:004B3CD3                 jnz     short loc_4B3CE4
  20. CODE:004B3CD5                 mov     eax, ds:off_4B6F2C
  21. CODE:004B3CDA                 mov     eax, [eax]
  22. CODE:004B3CDC                 mov     edx, [eax]
  23. CODE:004B3CDE                 call    dword ptr [edx+0ECh]
  24. CODE:004B3CE4 loc_4B3CE4:
  25. CODE:004B3CE4                 mov     eax, ds:off_4B6F2C
  26. CODE:004B3CE9                 mov     eax, [eax]
  27. ; Вызвать какую-то функцию проверки
  28. CODE:004B3CEB                 call    sub_4B022C
  29. CODE:004B3CF0                 test    al, al
  30. ; Если она вернула AL не равный 0, то программа работает в полном режиме
  31. CODE:004B3CF2                 jnz     short loc_4B3D06
  32. CODE:004B3CF4                 xor     edx, edx
  33. CODE:004B3CF6                 mov     eax, [ebx+340h]
  34. CODE:004B3CFC                 mov     ecx, [eax]
  35. CODE:004B3CFE                 call    dword ptr [ecx+0CCh]
  36. CODE:004B3D04                 pop     ebx
  37. CODE:004B3D05                 retn
  38. CODE:004B3D06 ; ---------------------------------------------
  39. CODE:004B3D06 loc_4B3D06:
  40. ; Заменить дефолтный текст на "Personal"
  41. CODE:004B3D06                 xor     edx, edx
  42. CODE:004B3D08                 mov     eax, [ebx+3F0h]
  43. CODE:004B3D0E                 call    @Controls@TControl@SetVisible$qqro
  44. ; Controls::TControl::SetVisible(bool)
  45. CODE:004B3D13                 mov     edx, offset _str_1_0_0_Personal.Text
  46. CODE:004B3D18                 mov     eax, [ebx+3C0h]
  47. CODE:004B3D1E                 call    @Controls@TControl@SetText
  48. ; Controls::TControl::SetText(System::AnsiString)
  49. CODE:004B3D23                 pop     ebx
Ну тут все тоже предельно ясно. Так как проверка активации выполняется на стороне недоступного нам сервера, а алгоритм генерации кода активации нам неизвестен и в принципе не может быть получен, то придется воспользоваться патчем. Записываем команды MOV AL,1 / RET в начало функции проверки по адресу 004B022C, сохраняем изменения, запускаем.

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

Окно с предложением активации пропало, во вкладке "О программе" наблюдаем текст о персональной полнофункциональной версии. Кроме того, стала доступной функция оптимизации памяти, недоступная в демо-режиме. А главное, что программа стала портативной и будет прекрасно работать без всякой активации на любом компьютере. Вот так в очередной раз была побеждена человеческая жадность, а мы научились обходить несложную защиту, основанную на активации по СМС.

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

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

Комментарии

Отзывы посетителей сайта о статье
nubuser (05.12.2017 в 14:16):
1. Возможно (на будущее) сохранять "исследуемую версию" программ, это же не противозаконно, они все триальные и т.п.?
А то версии меняются, и новичок уходит в ступор.

2.Подскажите, кто знает, пожалуйста, вот что...
Я не вижу у себя в IDA такое:

; По умолчанию установить текст "Demo"
CODE:004B3C9B                 mov     edx, offset _str_1_0_0_Demo.Text
CODE:004B3CA0                 mov     eax, [ebx+3C0h]
CODE:004B3CA6                 call    @Controls@TControl@SetText
; Controls::TControl::SetText(System::AnsiString)

То есть, не нахожу "offset _str_1_0_0_Demo.Text"

Это потому что автор (может, с чьей-то помощью) уже поработал над защитой?
Или искать не умею?
Или IDA нужно как-то настроить, чтобы она такое показывала?

3. "Но защиты никакой не появилось, ищем сообщение об успешной активации, чуть выше пара условных переходов, ведущих на "плохие" ответы" - опять-таки, что за сообщение, и как его найти?
Я и "Activated", и "Reristered", и "Success" искал - нет такого.
Пока вижу только "Demo" и "Personal" в Hiew.
Alex (23.02.2016 в 16:23):
То что фунция генерации на сервере, ничего еще не значит. Функция проверки на месте, можно ее разобрать, забрутить, найти коллизии, а далее набросать кейген. Правда эта прога того не стоит.
user (30.07.2013 в 03:06):
Не могу не возразить на:
"Ну раз есть демо-режим, значит должен быть и нормальный полноприводный."
***
Не... Удаляю предположения, но вы поймёте.
Роман (15.10.2012 в 12:50):
Вы не можете мириться с запросами шароварщиков для всего софта или как то выборочно?
ManHunter (06.10.2012 в 08:45):
Исходник, здесь не пансион благородных девиц. И если я где-то каких-то правил не читаю, то я в этом случае ничего там и не прошу.
Исходник (06.10.2012 в 05:54):
ManHunter,SVS
Зачем такое хамство сходу? ну не все как-то озадачиваются читать ваши правила сайта, вы читаете все правила когда устанавливаете программы? нет, так можно просто ответить без матов и хамья, а то как-то такое ощущение что вы безупречные люди и никогда не тупите, или вам тоже так отвечают - че баран, поди почитай или прозрей потому что я вот знаю, а ты нет.
А то неприятно такое от вас читать, как-то по высокомерному и быковски выходит.
А за статьи спасибо, тренироваться удобно.
SVS (28.08.2012 в 11:16):
Для любителей оптимизаторов: есть куда более полезная прога - Anvir Task Manager http://www.anvir.net/ . Так вот, в этой проге есть как дополнительная бонус-фича - оптимизация памяти. Бесплатно и красиво на зависть шароварщикам. Дискете далеко до неё. К чему это написала? Для тех, кто ни жить, ни быть хочет именно шароварными прогами пользоваться, а ломать даже по картинкам не умеет. Не заморачивайтесь, тут несколько ссылок на подобные проги даны. А смысл статьи немного в другом так-то.
ManHunter (26.08.2012 в 21:30):
Petr, камменты или правила читать не пробовал? Или похуй, читать - это не для тебя?
Petr (26.08.2012 в 21:22):
А где ссылка на отломанную версию?
буратино (11.08.2012 в 09:08):
Дискета.info как говорится - хотите ... всех?! сделайте её бесплатной и тем самым нанесите сокрушительный удар по статье ManHunter`a!
Руслан (10.08.2012 в 17:19):
Есть на самом деле интересная утилитка CintaNotes, а не эта фигня, почитал бы ).
Когда-то по вашему руководству отучил от триала Sothink SWF Decompiler, за что вам желаю как минимум всегда иметь возможность готовить по вашим рецептам ). Не запускаю чтопопало на компе, а так и разминка для ума.
ManHunter (10.08.2012 в 06:08):
Я так понимаю, что для активации теперь требуются админские права? Пойду попрошу у наших админов на работе, чтобы подняли уровень моей учетки, дабы я мог активировать программу :) А то они какие-то хмурые ходят, пусть хоть посмеются.
Anonymous (10.08.2012 в 05:10):
Автор с испугу повысил версию программы аж до 1.5 :)
Но защиты никакой не появилось, ищем сообщение об успешной активации, чуть выше пара условных переходов, ведущих на "плохие" ответы. Так что делаем один безусловным, а второй нопим, после чего программа активируется любым номером даже без наличия интернетов.

ну и для любителей непатченых файлов: при успешной регистрации в реестре по адресу HKCU/Software/Microsoft создается ключ с именем Clear Memory. Выставляем ему любое значение, например, "MANHUNTER" - и мы зарегистрированы.

Ждем завтра версию 2.0 :D

P.S. Хранить свою регистрацию в разделе реестра, предназначенном для нужд ОС - руки за такое отрывать надо.
Anonymous (09.08.2012 в 20:21):
"и на один компьютер" - а если сделал апгрейд или поменял компьютер, то покупай заново? Нифига себе...
ManHunter (08.08.2012 в 09:29):
Где ты увидел взлом? Я указал на слабые места в твоей защите, а готовых ломаных файлов тут нет и никогда не будет.
Дискета.info (08.08.2012 в 09:23):
Аяй, нехорошо ломать чужие программы!
hatebreed (08.08.2012 в 03:49):
Есть и бесплатные (open source) тулзы для очистки памяти

http://www.henrypp.org/?product=memreduct

это я к тому - а вдруг эта прога юзает те же фичи, только платн
Петр (06.08.2012 в 16:30):
Спасибо
Балбес (06.08.2012 в 13:19):
Я прекрасно понимаю, просто я выражаю свое мнение о том, что меня как раз интересует тематика узкая. Простите меня, эгоиста
SVS (05.08.2012 в 23:56):
Балбес, здесь всего поровну. И уж тем более данный сайт не является узкотематическим, просто у некоторых, как бы помягче сказать, балбесов мозги узкие... простите меня грешную...
Балбес (04.08.2012 в 11:35):
Ну наконец-то не варенье, а что-то более интересное
2 (04.08.2012 в 10:04):
как всегда всё кулл )

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

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

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