Blog. Just Blog

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

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

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

Забираем с сайта дистрибутив, устанавливаем. В папке обнаруживается основной исполняемый файл и пара динамических библиотек, которые, похоже, выполняют всю грязную работу. Основной файл ничем не защищен и не упакован, значит дизассемблер уже ждет его :) После запуска сразу появляется наг-окно с предложением купить программу или продолжить работу в ограниченном демонстрационном режиме.

Наг-окно при старте программы
Наг-окно при старте программы

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

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

А еще из внешних признаков в глаза бросается надпись "DEMO" в заголовке главного окна. Вот с нее и начнем. В файле строчка обнаруживается с первой попытки.

Строка найдена
Строка найдена

По перекрестным ссылкам выходим на код, где эта строка задействуется. Вот он:
  1. .text:007390E4                 push    dword ptr fs:[eax]
  2. .text:007390E7                 mov     fs:[eax], esp
  3. ; Функция проверки активации программы
  4. .text:007390EA                 call    sub_656CB8
  5. ; Сохранить статус активации из EAX в EBX
  6. .text:007390EF                 mov     ebx, eax
  7. ; Записать статус активации в блок настроек программы
  8. .text:007390F1                 mov     [esi+1631h], bl
  9. .text:007390F7                 cmp     bl, 1
  10. ; Программа не активирована, переход
  11. .text:007390FA                 jnz     short loc_739107
  12. ; Функция проверки типа лицензии
  13. .text:007390FC                 call    sub_656EB8
  14. ; Сохранить тип лицензии
  15. .text:00739101                 mov     [esi+1630h], al
  16. .text:00739107 loc_739107:
  17. ; Лицензия PLUS?
  18. .text:00739107                 cmp     byte ptr [esi+1630h], 2
  19. ; Нет, проверить еще
  20. .text:0073910E                 jnz     short loc_739117
  21. ; Принудительно установить статус активации
  22. .text:00739110                 mov     byte ptr [esi+1630h], 1
  23. .text:00739117 loc_739117:
  24. .text:00739117                 cmp     byte ptr [esi+1630h], 3
  25. .text:0073911E                 jnz     short loc_739127
  26. .text:00739120                 mov     byte ptr [esi+1630h], 1
  27. .text:00739127 loc_739127:
  28. ; Программа активирована?
  29. .text:00739127                 cmp     byte ptr [esi+1631h], 0
  30. ; Да, вывести в заголовок тип лицензии
  31. .text:0073912E                 jnz     short loc_73913F
  32. .text:00739130                 lea     eax, [ebp+var_4]
  33. .text:00739133                 mov     edx, offset aDemo ; " - DEMO"
  34. .text:00739138                 call    sub_409AC0
  35. .text:0073913D                 jmp     short loc_739147
  36. .text:0073913F ; -------------------------------
  37. .text:0073913F loc_73913F:
  38. .text:0073913F                 lea     eax, [ebp+var_4]
  39. .text:00739142                 call    sub_409620
  40. .text:00739147 loc_739147:
  41. ; Проверить тип лицензии
  42. .text:00739147                 movzx   eax, byte ptr [esi+1630h]
  43. ; Чтобы выполнился переход на PLUS, тип лицензии должен быть равен 2
  44. .text:0073914E                 sub     al, 1
  45. .text:00739150                 jb      short loc_739161
  46. .text:00739152                 jz      short loc_739188
  47. .text:00739154                 dec     al
  48. .text:00739156                 jz      short loc_7391AF
  49. .text:00739158                 dec     al
  50. .text:0073915A                 jz      short loc_7391D6
  51. .text:0073915C                 jmp     loc_7391FB
  52. .text:00739161 ; -------------------------------
  53. .text:00739161 loc_739161:
  54. .text:00739161                 lea     eax, [ebp+var_C]
  55. .text:00739164                 mov     ecx, [ebp+var_4]
  56. .text:00739167                 mov     edx, offset aAstraImage
  57. ; "Astra Image"
  58. .text:0073916C                 call    sub_409E6C
  59. .text:00739171                 mov     edx, [ebp+var_C]
  60. .text:00739174                 lea     eax, [ebp+var_8]
  61. .text:00739177                 call    sub_40A3A4
  62. .text:0073917C                 mov     edx, [ebp+var_8]
  63. .text:0073917F                 mov     eax, esi
  64. .text:00739181                 call    sub_52E920
  65. .text:00739186                 jmp     short loc_7391FB
  66. .text:00739188 ; -------------------------------
  67. .text:00739188 loc_739188:
  68. .text:00739188                 lea     eax, [ebp+var_14]
  69. .text:0073918B                 mov     ecx, [ebp+var_4]
  70. .text:0073918E                 mov     edx, offset aAstraImagePlus
  71. ; "Astra Image PLUS"
  72. .text:00739193                 call    sub_409E6C
  73. .text:00739198                 mov     edx, [ebp+var_14]
  74. .text:0073919B                 lea     eax, [ebp+var_10]
  75. .text:0073919E                 call    sub_40A3A4
  76. .text:007391A3                 mov     edx, [ebp+var_10]
  77. .text:007391A6                 mov     eax, esi
В принципе, практически все здесь происходящее я описал в комментариях к коду, но лучше продублировать словами. Проверка выполняется в два этапа: сперва проверяется статус активации. Если программа активирована, то функция проверки sub_656CB8 должна вернуть EAX=1. После этого программа проверяет тип лицензии. Как можно убедиться по строчкам из программы, таких лицензий четыре. Две каких-то "SE" 4-й версии (Special Edition?), одна обычная "Astra Image" и максимальная "PLUS". Этому типу лицензии должен соответствовать результат EAX=2 из функции sub_656EB8. Ну вот, все нужные значения у нас имеются, можно приступать к точечной хирургии. В начало функции проверки активации записываем пару команд MOV EAX,1 и RET. В начало функции проверки типа лицензии записываем пару команд MOV EAX,2 и RET. Сохраняем изменения.

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

Наг-окно при запуске программы больше не показывается, в заголовке красуется "Astra Image PLUS", при попытке сохранить файл он сохраняется. Цель достигнута, программа работает без ограничений. А главное, что после таких целебных процедур программа может работать со сменного носителя и ее можно использовать в дорожном комплекте. Спасибо авторам за интересный софт.

Поделиться ссылкой ВКонтакте
Просмотров: 3163 | Комментариев: 13

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

Комментарии

Отзывы посетителей сайта о статье
voffka (20.02.2018 в 03:22):
как бы

[HKEY_CURRENT_USER\Software\Phase Space Technology\Astra Image 4.0]
"LicenseKey"="3941495052"

Еще может быть ключ с онлайн проверкой
brute (17.02.2018 в 17:51):
что-то не очевидно.. Может, как-то использовать DynamoRIO для получения трассы, плагин xHotSpots для получения магических точек, перехват проверок реестра.. или выпрямитель рук какой? Короче, запатчил (у меня винда х64, поэтому адреса другие) как описано, файл сохраняется (я и сам с таким же результатом запатчивал на стадии ввода серийника). Только изменения в сохраненном файле не сохраняются! Кручу ползунки, жму "сохранить как" под другим именем, а в сохраненном файле изменений нет..
п.с. зачем "хиев"? Ида тачно также ищет строки, только в option-general-string надо выбрать в данном случае юникод.
xussr (15.02.2018 в 06:18):
Скорее опыта и знаний чтоб так фундументально все осмыслить до конца нежели у вас здесь на готовых подсказках, иначе не было интереса к данному ресурсу который помогает в этом
ManHunter (14.02.2018 в 17:36):
И что удерживает от подвига? Копай, изучай.
xussr (14.02.2018 в 17:29):
Да про генерацию ключа если можно очень хотелось докапаться как и что тут производиться хотя бы вводно совсем до конца думаю не стоит все будет и так понятно
ManHunter (13.02.2018 в 18:08):
x64 патчится точно так же.
wet (13.02.2018 в 16:53):
Эх, жалко, что Вы на этот раз пошли по пути наименьшего сопротивления, а не как обычно, вычисляли валидный серийный номер. Если бы серийник вычислили, то можно было бы зарегистрировать версию x64, которая тоже есть в комплекте.
Спасибо за идею - ни столько сам процесс, как то, что узнаю о годных программах. А серийник можно и на варёзнике раздобыть.
ManHunter (13.02.2018 в 14:35):
В DecomAS есть опция с подменой хвида. Но оффтопить все-таки не надо.
pawel97 (13.02.2018 в 14:14):
Извиняюсь что не в тему, не бейте больно...
Как распаковать аспр, если есть ключ на другой не известный мне hwid?
ManHunter (13.02.2018 в 10:41):
nubuser, на самом деле в статью попадают только итоги поисков. До этого, естественно, перебирается множество вариантов, пробуются разные подходы. Так что вся грязная работа остается "за кадром", потому и кажется, что все так просто находится с первого раза.
nubuser (13.02.2018 в 09:23):
То, что я боялся спросить...
В том то и дело, что даже поиск"- DEMO" дает два вхождения.
А просто DEMO там еще больше.

ТО ли у ManHunter (как говорили в польском фильме "Знахарь") или потрясающая интуиция, или колоссальный опыт.
xussr (13.02.2018 в 06:22):
Какието ключи что то с чемто сравнивается обфуцируется читается из lic файла лицензии мути много
Noobie (12.02.2018 в 15:05):
Спасибо, познавательно, но уж очень быстро :-) А в софте есть на что поглядеть, вот такая надпись имеется 'TheHairyHackerHackedAndHavingHac' и еще много чего. Но пока в ольку не заряжал, просто поглядел с высоты хьюшного полета.

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

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

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