Исследование защиты программы Green Screen Wizard
Скриншот программы Green Screen Wizard
Программа Green Screen Wizard предназначена для создания коллажей на базе фотографий, выполненных по технологии "хромакей". Суть этой технологии заключается в том, что на заднем фоне снимаемого объекта размещается однотонный экран зеленого цвета. При последующей обработке этот однотонный фон исключается и вместо него можно вставить в кадр любой другой фон. Такой способ гораздо удобнее, чем вырезать во всяких фотошопах по контуру нужные объекты. Конечно, это если считать стоимость программы 130 баксов приемлемой. Если вы так не считаете, то в продолжении статьи у меня для вас есть полезная информация.
Скачиваем дистрибутив демо-версии, устанавливаем, запускаем. Сразу же появляется окно с предупреждением, что программа не зарегистрирована, но предлагает опробовать ее в демо-режиме.
Окно регистрации
Как мы видим, программа умеет работать в трех режимах: Full Version, Professional Version и Pro Batch Version. Друг от друга они отличаются наличием всяких полезных функций, а в незарегистрированном варианте программы на готовую фотографию накладывается водяной знак "Demo". Итак, что нам надо сделать? Во-первых, избавиться от триального окна при запуске программы, а во-вторых сделать так, чтобы программа всегда работала в максимальном режиме "Pro Batch Version".
Начнем с триального окна. Файл ничем навесным не защищен и не упакован, поэтому в ресурсах легко отыскать нужное нам диалоговое окно:
Диалоговое окно в ресурсах
Его индекс равен 195 в десятичной или 0C3h в шестнадцатеричной системе счисления. Поищем в дизассемблере что-нибудь, связанное с этим индексом. После нескольких ложных вхождений, найдется вот такой кусочек кода:
Code (Assembler) : Убрать нумерацию
- .text:00518422 mov esi, [esp+18h+arg_0]
- .text:00518426 push 0
- .text:00518428 push 0C3h
- .text:0051842D mov ecx, esi
- .text:0051842F call ??0CDialog@@QAE@IPAVCWnd@@@Z
- ; CDialog::CDialog(uint,CWnd *)
- .text:00518434 lea edi, [esi+78h]
- .text:00518437 mov [esp+18h+var_4], 0
- .text:0051843F mov ecx, edi
- .text:00518441 mov dword ptr [esi], offset off_5EB91C
Code (Assembler) : Убрать нумерацию
- .text:00506D44 mov eax, [ebp+arg_3D30C]
- .text:00506D4A push offset aGswd ; "GSWD"
- .text:00506D4F push eax ; unsigned __int8 *
- ; Сравнить какую-то строку со строкой "GSWD"
- .text:00506D50 call __mbscmp
- .text:00506D55 add esp, 8
- .text:00506D58 test eax, eax
- .text:00506D5A setz al
- .text:00506D5D test al, al
- .text:00506D5F push esi
- .text:00506D60 jz short loc_506D8C
- .text:00506D62 call sub_4ED8C0
- .text:00506D67 lea eax, [esp+6F0h+var_674]
- .text:00506D6B push eax
- .text:00506D6C mov [ebp+arg_288], 0
- .text:00506D76 mov [ebp+arg_28E], 1
- ; Открыть триальное окно
- .text:00506D7D call sub_518400
- .text:00506D82 mov byte ptr [esp+6F0h+var_8], 11h
- .text:00506D8A jmp short loc_506DA7
- .text:00506D8C ; -------------------------------------------------
- .text:00506D8C loc_506D8C:
- ; Вызывать какую-то функцию проверки
- .text:00506D8C call sub_4EF3C0
- .text:00506D91 test al, al
- .text:00506D93 jnz short loc_506DC8
- .text:00506D95 lea ecx, [esp+6F0h+var_674]
- .text:00506D99 push ecx
- ; Открыть триальное окно
- .text:00506D9A call sub_518400
- .text:00506D9F mov byte ptr [esp+6F0h+var_8], 12h
Программа работает в демо-режиме
Вторая часть Марлезонского балета. Переведем программу в режим максимальных возможностей, то есть сделаем из "Demo Version" полноценную "Pro Batch Version". Как вы уже догадались, все начинается с поиска строки "Demo Version" и выяснения условий ее появления.
Code (Assembler) : Убрать нумерацию
- ; Записать в регистр EAX переменную из [esi+20h]
- .text:004EF824 mov eax, [esi+20h]
- .text:004EF827 test eax, eax
- ; Если она не равна 0, то переход дальше, иначе программа работает в демо-режиме
- .text:004EF829 jnz short loc_4EF873
- .text:004EF82B push 0Bh ; MaxCount
- .text:004EF82D push offset aVersion7_4 ; "Version 7.4"
- .text:004EF832 lea ecx, [esi+3D0A8h]
- .text:004EF838 call sub_401720
- .text:004EF83D push 4 ; MaxCount
- .text:004EF83F push offset aGswd_0 ; "GSWD"
- .text:004EF844 lea ecx, [esi+3D0B4h]
- .text:004EF84A call sub_401720
- .text:004EF84F push 27h ; MaxCount
- .text:004EF851 push offset aGreenScreen_10
- ; " Green Screen Wizard - Demo Version"...
- .text:004EF856 lea ecx, [esi+3D0B0h]
- .text:004EF85C call sub_401720
Code (Assembler) : Убрать нумерацию
- .text:004EF7F6 push offset aGswe ; "GSWE"
- .text:004EF7FB push edi ; int
- .text:004EF7FC call sub_401E10
- .text:004EF801 add esp, 8
- .text:004EF804 test al, al
- .text:004EF806 jz short loc_4EF819
- .text:004EF808 mov dword ptr [esi+20h], 3
- .text:004EF80F mov byte ptr [esi+24h], 1
- .text:004EF813 mov byte ptr [esi+25h], 1
Code (Assembler) : Убрать нумерацию
- .text:004EF689 lea eax, [esp+1Ch+var_C]
- .text:004EF68D mov large fs:0, eax
- .text:004EF693 push esi
- ; Вызвать какую-то функцию проверки
- .text:004EF694 call sub_4EF3C0
- .text:004EF699 test al, al
- ; Условный переход сразу же на определение версии
- .text:004EF69B jz loc_4EF824
- .text:004EF6A1 lea ecx, [esi+3B610h]
- .text:004EF6A7 test ecx, ecx
- .text:004EF6A9 lea edi, [esi+3D0A4h]
- .text:004EF6AF jnz short loc_4EF6B5
- .text:004EF6B1 xor eax, eax
- .text:004EF6B3 jmp short loc_4EF6CB
Программа успешно "зарегистрирована"
Надпись в заголовке программы изменилась на "Green Screen Wizard Professional", в меню инструментов появился и стал доступным раздел "Batch", а на фотографии пропали надписи "Demo". На этот раз хирургии оказалось больше, чем обычно, заменой пары байт дело не обошлось. Но главное, что основная цель достигнута.
Просмотров: 6109 | Комментариев: 9
Метки: исследование защиты, графика
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Chris
(26.07.2014 в 14:05):
Здравствуйте, после выполнения последнего этапа исследования: "NOP'им условный переход по адресу 004EF69B..." программа Green Screen Wizard не запускается, появляется окно с предложением отладки программы. В чем может быть проблема?
Vitamin
(26.08.2013 в 20:44):
Не стоит гадать на кофейной гуще. Патчить проще, но не интереснее кейгена.
Если повнимательней копнуть декомпилированный код, то можно заметить, что прога использует библиотеку Chilkat (http://www.chilkatsoft.com).
В качестве алгоритма используется процедура keyed-Hash Message Authentication Code (HMAC или KHMAC), точнее HMAC-MD5, а как аргументы - HardwareCode (генерится из ComputerName и VolumeSerial) и введённый серийник (типа 'GSWE-12345-67890').
Если собрались кейгенить и не желаете использовать либу Chilkat, подскажу альтернативу на C# - копайте в направлении 'HMACMD5'.
Кейген на C# лично у меня работает...
Если повнимательней копнуть декомпилированный код, то можно заметить, что прога использует библиотеку Chilkat (http://www.chilkatsoft.com).
В качестве алгоритма используется процедура keyed-Hash Message Authentication Code (HMAC или KHMAC), точнее HMAC-MD5, а как аргументы - HardwareCode (генерится из ComputerName и VolumeSerial) и введённый серийник (типа 'GSWE-12345-67890').
Если собрались кейгенить и не желаете использовать либу Chilkat, подскажу альтернативу на C# - копайте в направлении 'HMACMD5'.
Кейген на C# лично у меня работает...
Voffka
(26.08.2013 в 20:33):
Vopros
(26.08.2013 в 18:06):
Voffka, что есть простой md5 ?
У мне пару прог до сих пор валяются, хэш можно сменить, а ключ брутить - жалко железо греть.
Ну и по поводу васика, да привиделось имя функи, а басика не кейгеню после одного случая, когда пришлось разгребать страницы 3 страшных goto.
У мне пару прог до сих пор валяются, хэш можно сменить, а ключ брутить - жалко железо греть.
Ну и по поводу васика, да привиделось имя функи, а басика не кейгеню после одного случая, когда пришлось разгребать страницы 3 страшных goto.
Voffka
(26.08.2013 в 12:19):
Ну как и думал, простой мд5.
irokkezz
(25.08.2013 в 08:26):
Setup - Utilities - Activate Product
Voffka
(24.08.2013 в 21:03):
Vopros
С чего такое умозаключение(я про бэсик)?
Даже из скрина exescope видно, что это не он, ибо в бэсике не бывает ресурсов окромя иконки.
ManHunter. Не знаешь как вызвать диалог офлайновой активации(в ресурсах есть), там вроде закейгенить не сложно.
С чего такое умозаключение(я про бэсик)?
Даже из скрина exescope видно, что это не он, ибо в бэсике не бывает ресурсов окромя иконки.
ManHunter. Не знаешь как вызвать диалог офлайновой активации(в ресурсах есть), там вроде закейгенить не сложно.
Vopros
(24.08.2013 в 19:21):
Тетка зачетная)
А прога на васике или показалось ?
А прога на васике или показалось ?
Laki
(23.08.2013 в 20:24):
Волшебство да и только)))Кто-нибудь может подсказать литературу,чтобы освоиться в этой теме? Её много,конечно,в сети,но что всё ж лучше.Что-то пока ничего не получается. Автору,респект и уважуха,действительно интересные методы!!!
Добавить комментарий
Заполните форму для добавления комментария