Исследование защиты программы JPEG Imager
Скриншот программы JPEG Imager
JPEG Imager от V-Methods Software - небольшая удобная программа для оптимизации графических файлов в формате JPEG, PNG и GIF. В ней собраны все основные инструменты, необходимые для работы с графикой: удаление шумов, изменение размера, корректировка цветности, контраста, яркости и т.д. Все управление интуитивно понятное. Конечно, все эти функции есть в серьезных графических пакетах типа Photoshop, но не всегда хочется запускать тяжеленный софт ради несложных корректировок изображения. Тут-то и окажется полезной программа JPEG Imager. Но как обычно все омрачается необходимостью расстаться с некоторой суммой денег за регистрацию.
Качаем дистрибутив, устанавливаем, запускаем. Из внешних признаков триальности - строка "Unregistered copy" в диалоговом окне "О программе". Исполняемый файл ничем не упакован, строка в нем находится легко.
Нехорошая строка найдена
В дизассемблере находим код, который на нее ссылается. А немного выше - проверка и условия срабатывания триальной ветки алгоритма:
Code (Assembler) : Убрать нумерацию
- ...
- .text:0040918A mov [ebp+var_4], edx
- .text:0040918D inc dword ptr [ebx+1Ch]
- .text:00409190 mov word ptr [ebx+10h], 14h
- ; Прочитать двойное слово
- .text:00409196 mov ecx, [esi+0C34h]
- ; Сдвинуть на 10h бит вправо
- .text:0040919C sar ecx, 10h
- ; Результат = 7E5A?
- .text:0040919F cmp ecx, 7E5Ah
- .text:004091A5 setz al
- .text:004091A8 and eax, 1
- .text:004091AB test al, al
- ; Нет, перейти на триальную ветку алгоритма
- .text:004091AD jz short loc_40920B
- ; Программа зарегистрирована
- .text:004091AF mov word ptr [ebx+10h], 20h
- .text:004091B5 mov edx, offset aRegisteredTo
- ; Строка "Registered to: "
- .text:004091BA lea eax, [ebp+var_8]
- .text:004091BD call sub_508548
- .text:004091C2 inc dword ptr [ebx+1Ch]
- .text:004091C5 xor edx, edx
- .text:004091C7 mov [ebp+var_C], edx
- ...
Code (Assembler) : Убрать нумерацию
- ...
- .text:004080AD mov ecx, [esi+0C34h]
- .text:004080B3 sar ecx, 10h
- .text:004080B6 cmp ecx, 7E5Ah
- .text:004080BC setz al
- .text:004080BF and eax, 1
- .text:004080C2 test al, al
- .text:004080C4 jnz short loc_4080F7
- .text:004080C6 mov [ebp+var_38], 8
- .text:004080CC mov edx, offset aWeAreSorryButY
- ; "We are sorry, but your 30-day trial per"...
- .text:004080D1 lea eax, [ebp+var_4]
- .text:004080D4 call sub_508548
- ...
Code (Assembler) : Убрать нумерацию
- ...
- .text:0040F54C push edx
- .text:0040F54D mov ecx, [edx]
- .text:0040F54F call dword ptr [ecx+20h]
- .text:0040F552 cmp eax, [ebp+var_10]
- ; Первая проверка зарегистрированности
- .text:0040F555 jnz short loc_40F592
- .text:0040F557 push 60h
- .text:0040F559 mov eax, [ebp+var_10]
- .text:0040F55C push eax
- .text:0040F55D mov edx, [eax]
- .text:0040F55F call dword ptr [edx+78h]
- .text:0040F562 push 10000h
- .text:0040F567 mov ecx, [ebp+var_10]
- .text:0040F56A push ecx
- .text:0040F56B mov eax, [ecx]
- .text:0040F56D call dword ptr [eax+30h]
- .text:0040F570 test eax, eax
- .text:0040F572 setnle dl
- .text:0040F575 and edx, 1
- .text:0040F578 mov eax, edx
- .text:0040F57A and dword ptr [ebx+0C34h], 0FFFFh
- .text:0040F584 test al, al
- ; Вторая проверка зарегистрированности
- .text:0040F586 jz short loc_40F592
- ; Программа считается зарегистрированной. Записать 7E5A0000h в ячейку
- ; памяти [reg+0C34h]
- .text:0040F588 or dword ptr [ebx+0C34h], 7E5A0000h
- .text:0040F592 loc_40F592:
- .text:0040F592 dec dword ptr [esi+1Ch]
- .text:0040F595 mov eax, [ebp+var_14]
- ...
Программа успешно "зарегистрирована"
Интересно, что если сперва под отладчиком поставить точку останова на этот переход, попытаться ввести какой-нибудь неправильный код, а затем пропатчить переход в памяти, то в папке с программой будет создан файл ji2.key примерно такого содержания:
[JPEG Imager 2.0]
UserName=ManHunter / PCL
UserKey=123123123
Это и есть регистрационный ключ, пусть и фейковый. Теперь, если зафиксировать изменения в исполняемом файле, то в диалоге "О программе" будут показываться ваши регистрационные данные. Дополнительный бонус в том, что теперь программа становится портативной и ее можно записать на любой сменный носитель. Лично я таскаю ее на флешке, полезно иметь под рукой подобный инструмент.
Просмотров: 5224 | Комментариев: 15
Метки: исследование защиты, графика
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
gob
(26.05.2024 в 15:09):
дистрибутивчик исчез, даже web.archive не видит. Стянул с варезника.
Vampir
(17.05.2010 в 09:17):
SVS, если забыл, то ManHunter раньше постоянно выкладывал патчи. По крайней мере и на определенном форуме появлялись...
SVS
(06.05.2010 в 16:34):
Vampir, ошибсо адресом :) это не варез-сайт. Всякие патчи готовые ищи в другом месте. Здесь немного другой смысл: исследование защитных свойств. ManHunter пишет это для тех, кто кумекает, а для тех, кто не очень - есть другие сайты, где описываются почему так, а не так как тебе подумалось. Смысл не в том, чтоб всенепременно сломать нужную в хозяйстве прогу, смысл гораздо глубже и доступен тому, кто поймёт ;)
Alex, твои действия, по твоим словам, напоминают тоже некую ситуёвину, раз ManHunter у нас "заяц в общественном транспорте": стоит во дворе машина. Чужая. Не твоя. А ты ключи втихаря подобрал и сел покататься. Причём даже на место не вернул. Угнал типа. И не спешишь хозяину машины доложить, что у машинки сигнализация уй какая херовая, надо бы поменять или пользоваться другими системами защиты. Чуствуешь теперь разницу между собой и ManHunter'ом? Так кто из вас праведник, а кто - грешник? То-то... Так что подумай на досуге, если не дошло...
Alex, твои действия, по твоим словам, напоминают тоже некую ситуёвину, раз ManHunter у нас "заяц в общественном транспорте": стоит во дворе машина. Чужая. Не твоя. А ты ключи втихаря подобрал и сел покататься. Причём даже на место не вернул. Угнал типа. И не спешишь хозяину машины доложить, что у машинки сигнализация уй какая херовая, надо бы поменять или пользоваться другими системами защиты. Чуствуешь теперь разницу между собой и ManHunter'ом? Так кто из вас праведник, а кто - грешник? То-то... Так что подумай на досуге, если не дошло...
Isaev
(05.05.2010 в 20:33):
Alex,
imho программа, вся защита которой сводится к патчу 1 байта не достойна того, чтобы секрет её взлома ещё и в привате хранить :)))
А "жить в 'нормальном' обществе" мы и так не будем (по крайней мере мы в любом случае), т.к. для того, чтобы всё привести в нормальный вид нужно поколения 3, при учёте что у власти будут люди, которые будут хоть немного об этом думать, а не только тащить! т.ч. не надо тут разводить вот это ;)
imho программа, вся защита которой сводится к патчу 1 байта не достойна того, чтобы секрет её взлома ещё и в привате хранить :)))
А "жить в 'нормальном' обществе" мы и так не будем (по крайней мере мы в любом случае), т.к. для того, чтобы всё привести в нормальный вид нужно поколения 3, при учёте что у власти будут люди, которые будут хоть немного об этом думать, а не только тащить! т.ч. не надо тут разводить вот это ;)
ManHunter
(05.05.2010 в 10:11):
Представляешь, я тоже пишу программы, всякие скрипты и прочее. И выкладываю это все совершенно бесплатно, чтобы люди ими пользовались. Хотя я больше чем уверен, что если бы я распространял их по схеме donationware, то получал бы с них неплохой навар.
Alex
(05.05.2010 в 09:18):
Добрый день.
Вот я тоже такое делаю с программами(чисто для себя), но зачем же выкладывать такое в паблик?
Я конечно понимаю, что есть желание поделиться полученными результатами, но считаю надо уважать труд других.
Простой пример - представьте, что вы написали эту программу.
Вот вы замечали, что люди отказываются от билетов в общественном транспорте? Как считаете хорошо это или плохо?
Я считаю плохо. Так мы никогда не будем жить в "нормальном" обществе.
И вывод только один - воровать, взламывать ведь живем для себя.
Вот я тоже такое делаю с программами(чисто для себя), но зачем же выкладывать такое в паблик?
Я конечно понимаю, что есть желание поделиться полученными результатами, но считаю надо уважать труд других.
Простой пример - представьте, что вы написали эту программу.
Вот вы замечали, что люди отказываются от билетов в общественном транспорте? Как считаете хорошо это или плохо?
Я считаю плохо. Так мы никогда не будем жить в "нормальном" обществе.
И вывод только один - воровать, взламывать ведь живем для себя.
Vampir
(04.05.2010 в 16:27):
Можно было б для тех, кому "уже не интересно" в асме копаться выложить патчик ;)
Isaev
(04.05.2010 в 03:04):
ManHunter, Да ты, в общем, и сам смог бы вполне, просто ленишься :)
ManHunter
(04.05.2010 в 01:13):
Isaev, ну так блеснул бы правильной статейкой, я уверен, многие люди сказали бы спасибо. А то осуждать что-то, не предлагая никакой альтернативы - это тоже не есть хорошо.
x
(04.05.2010 в 00:44):
Эти статьи из разряда "делай как я, и меньше вопросов". От новичка скрыта идея, почему та или иная инструкция опознана ManHunterом, как проверка или переход в алгоритме поиска лицензии. То есть нет четкой логики, почему ищем именно так, а не иначе. На какой базе выбрана линия лома. Мне повезло, я нахожусь на уровне между теми, кому это не ясно и теми для когда это уже не интересно. :)
Andrey
(03.05.2010 в 23:31):
Программа из категории MUST HAVE....Спасибо!
Isaev
(03.05.2010 в 22:42):
Чтобы пропатчить прогу надо минут 5-10 макс. Практически стандартная последовательность действий и в результате не интересно и после 1-2 раз уже ничему не учишься... А криптокейген интереснее на много.
ManHunter
(03.05.2010 в 20:58):
Не вижу ничего плохого в патче.
Isaev
(03.05.2010 в 20:52):
Там такая прикольная рега (просто проверка кривыми руками написана)!
А ты учишь людей патчить...
Лучше бы разобрал алго и показал, как кейгенят такие вещи ;)
А ты учишь людей патчить...
Лучше бы разобрал алго и показал, как кейгенят такие вещи ;)
INC.
(02.05.2010 в 09:23):
Thanks
Добавить комментарий
Заполните форму для добавления комментария