Blog. Just Blog

Исследование защиты программы Asoftis 3D Box Creator

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

Программа 3D Box Creator от компании Asoftis предназначена для создания изображений трехмерных коробок с красивым оформлением, логотипами и прочим. Результаты до шедевров точно не дотягивают, видели и получше. Но и которые получше, и это поделие, по какой-то неведомой причине все требуют денег.

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

Сообщение о неправильной регистрации
Сообщение о неправильной регистрации

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

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

Получается, что строка грузится по индексу. Он тоже обнаруживается в файле с первого же захода:

Строка индекса
Строка индекса

А вот используется этот индекс в следующей конструкции. Как видите, тут сразу загружаются несколько языковых строк.

Указатели на индексы
Указатели на индексы

Теперь давайте задействуем логику. Если строки загружаются, то должны быть какие-то ссылки на результат загрузки, по которым в дальнейшем программа будет к этим строкам обращаться. Первая функция одинаковая для всех строчек, можно предположить, что она выполняет загрузку. А вот следующей за ней функции в качестве одного из аргументов передается DWORD с увеличивающимся значением. Вот это и есть адрес, куда должна сохраняться ссылка на загруженную строку. Строке с сообщением о неправильной регистрации соответствует ячейка с адресом 00BB0830.

Перекрестные ссылки на указатель
Перекрестные ссылки на указатель

Открываем в дизассемблере список перекрестных ссылок на этот адрес, смотрим. Кроме кода загрузки этот адрес используется в следующем коде.
  1. .text:00AA8A62                 push    eax
  2. .text:00AA8A63                 lea     edx, [ebp+var_24]
  3. .text:00AA8A66                 mov     eax, [ebx+3C4h]
  4. .text:00AA8A6C                 call    sub_53DF28
  5. .text:00AA8A71                 mov     edx, [ebp+var_24]
  6. .text:00AA8A74                 pop     eax
  7. ; Вызвать функцию сравнения
  8. .text:00AA8A75                 call    sub_40C7AC
  9. ; Если строки не равны, перейти на вывод сообщения
  10. .text:00AA8A7A                 jnz     short loc_AA8AFB
  11. .text:00AA8A7C                 mov     eax, dword_BB082C
  12. .text:00AA8A81                 call    sub_5992CC
  13. .text:00AA8A86                 mov     ecx, 2001Fh
  14. .text:00AA8A8B                 mov     dl, 1
  15. .text:00AA8A8D                 mov     eax, ds:off_502868
  16. .text:00AA8A92                 call    sub_5039F8
  17. .text:00AA8A97                 mov     esi, eax
  18. .text:00AA8A99                 mov     edx, 80000001h
  19. .text:00AA8A9E                 mov     eax, esi
  20. .text:00AA8AA0                 call    sub_503A9C
  21. .text:00AA8AA5                 mov     cl, 1
  22. .text:00AA8AA7                 mov     edx, offset off_AA8B70
  23. .text:00AA8AAC                 mov     eax, esi
  24. .text:00AA8AAE                 call    sub_503BF4
  25. .text:00AA8AB3                 lea     edx, [ebp+var_28]
  26. .text:00AA8AB6                 mov     eax, [ebx+3C0h]
  27. .text:00AA8ABC                 call    sub_53DF28
  28. .text:00AA8AC1                 mov     ecx, [ebp+var_28]
  29. .text:00AA8AC4                 mov     edx, offset off_AA8BBC
  30. .text:00AA8AC9                 mov     eax, esi
  31. .text:00AA8ACB                 call    sub_50454C
  32. .text:00AA8AD0                 lea     edx, [ebp+var_2C]
  33. .text:00AA8AD3                 mov     eax, [ebx+3C4h]
  34. .text:00AA8AD9                 call    sub_53DF28
  35. .text:00AA8ADE                 mov     ecx, [ebp+var_2C]
  36. .text:00AA8AE1                 mov     edx, offset off_AA8BDC
  37. .text:00AA8AE6                 mov     eax, esi
  38. .text:00AA8AE8                 call    sub_50454C
  39. .text:00AA8AED                 mov     eax, off_BB1448
  40. .text:00AA8AF2                 mov     eax, [eax]
  41. .text:00AA8AF4                 call    sub_AAB494
  42. .text:00AA8AF9                 jmp     short loc_AA8B05
  43. .text:00AA8AFB ; ---------------------------------------
  44. .text:00AA8AFB loc_AA8AFB:
  45. ; Вывести сообщение о неправильной регистрации
  46. .text:00AA8AFB                 mov     eax, dword_BB0830
  47. .text:00AA8B00                 call    sub_5992CC
Если вы не первый день ковыряетесь в коде, то невооруженным взглядом определите, что конструкция, в которой присутствуют регистры EAX и EDX, потом вызывается некая функция, а затем без проверки регистра результата выполняется условный переход, не что иное, как функция сравнения двух строк.

Сравнение строк
Сравнение строк

Отправляем программу в отладчик, ставим точку останова по адресу 00AA8A75, запускаем программу на выполнение и повторяем регистрацию левыми данными. Когда точка останова сработает, в регистрах EAX и EDX будут указатели на введенную левую строку и нечто, очень похожее на серийный номер. Так, для имени "ManHunter / PCL" проверочный серийник будет "888576-554916".

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

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

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

Комментарии

Отзывы посетителей сайта о статье
Комментариeв нет

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

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

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