Исследование защиты программы SSD Ready
Скриншот программы SSD Ready
Программа SSD Ready предназначена для сбора статистики о том, какое приложение, на какой диск и сколько записывает данных. Полученные данные используются для приблизительной оценки, на сколько хватит ресурса SSD в случае замены на него HDD при такой активности использования. Если SSD уже установлен, то эти данные используются для расчета времени его жизни. В бесплатном варианте бесполезна чуть менее, чем полностью, а нормальную информацию показывает только при наличии платной лицензии.
Забираем с сайта дистрибутив, устанавливаем, смотрим что и как. Главный исполняемый файл ничем не упакован, отправляем его на разбор в дизассемблер.
Для регистрации программы используется кнопка Buy, она же выполняет роль кнопки "О программе", через нее же можно совершить покупку, если по какой-то причине вы находитесь не в совсем здравом уме.
Окно для ввода серийного номера
Никаких кнопок для фиксации введенного серийника нет, значит проверка выполняется на этапе его ввода. Сообщений о правильности и неправильности тоже не выводится. Что ж, вполне разумное решение в плане защиты.
Перебором строк типа "license", "registered" и тому подобных, обнаруживается вот такое интересное место в коде:
Code (Assembler) : Убрать нумерацию
- .text:00409936 mov eax, dword_45DBA0
- .text:0040993B mov dword ptr [eax+2B8h], 0
- .text:00409945 mov dword ptr [eax+2B4h], 0
- .text:0040994F mov dword ptr [eax+2BCh], 0
- .text:00409959 loc_409959:
- .text:00409959 mov ecx, [eax+2B8h]
- .text:0040995F test ecx, ecx
- .text:00409961 jz loc_4099ED
- .text:00409967 cmp dword ptr [eax+2C8h], 0
- .text:0040996E jz short loc_4099A3
- .text:00409970 cmp ecx, 2
- .text:00409973 jnb short loc_4099A3
- .text:00409975 push 0
- .text:00409977 push 0
- .text:00409979 push offset aThisLicenseInN
- ; "This license in not for server version "...
- .text:0040997E mov dword ptr [eax+2B8h], 0
- .text:00409988 mov dword ptr [eax+2B4h], 0
- .text:00409992 mov dword ptr [eax+2BCh], 0
- .text:0040999C call sub_41D627
- .text:004099A1 pop esi
- .text:004099A2 retn
Code (Assembler) : Убрать нумерацию
- .text:004098F0 push dword ptr [esi+298h]
- .text:004098F6 lea ecx, [ecx+17Ch]
- .text:004098FC call sub_406750
- .text:00409901 push offset a0d3ed78e011853
- ; "0D3ED78E0118535B29B"
- .text:00409906 push dword ptr [esi+298h]
- .text:0040990C call sub_42B56F
- .text:00409911 add esp, 8
- .text:00409914 test eax, eax
- .text:00409916 jz short loc_409936
- .text:00409918 push offset a13de4355012b9b
- ; "13DE4355012B9B3FA0C"
- .text:0040991D push dword ptr [esi+298h]
- .text:00409923 call sub_42B56F
- .text:00409928 add esp, 8
- .text:0040992B test eax, eax
- .text:0040992D jz short loc_409936
Строки серийников в файле
Для разблокировки этих ключей достаточно заменить или обнулить записи о них в исполняемом файле. После этого программу можно будет зарегистрировать при помощи любого из них.
Программа успешно зарегистрирована
Первый серийник регистрирует на Professional License, второй предназначен для серверной версии. Поскольку заблокированные серийники присутствуют в каждой версии, можно легко сделать универсальный патч-разбаниватель. К тому же мы получили информацию о формате серийного номера.
Теперь попробуем разобрать алгоритм генерации и проверки серийника. Вернемся к отладчику и проверкам "черного списка". Прямо перед ними по адресу 004098FC есть еще один вызов функции, параметром которого является введенный серийник. Давайте посмотрим ее повнимательнее. Первым делом считается длина строки введенного серийника. Строка юникодная, по два байта на символ, поэтому и такой корявый алгоритм.
Code (Assembler) : Убрать нумерацию
- .text:004067B0 loc_4067B0:
- .text:004067B0 mov ax, [ecx]
- .text:004067B3 add ecx, 2
- .text:004067B6 test ax, ax
- .text:004067B9 jnz short loc_4067B0
- .text:004067BB sub ecx, edx
- .text:004067BD sar ecx, 1
- .text:004067BF or ebx, 0FFFFFFFFh
- ; Длина получилась 13h символов?
- .text:004067C2 cmp ecx, 13h
- ; Нет, переход на ошибку
- .text:004067C5 jnz loc_406895
- .text:004067CB lea ecx, [esp+444h+var_418]
Code (Assembler) : Убрать нумерацию
- .text:00406836 mov eax, [esp+444h+var_41C]
- .text:0040683A or ecx, ebx
- .text:0040683C xor edi, edi
- .text:0040683E mov edi, edi
- ; Вычислить контрольную сумму для каждого из 11 первых символов
- .text:00406840 loc_406840:
- .text:00406840 movzx esi, byte ptr [eax+edi*2]
- .text:00406844 movzx edx, cl
- .text:00406847 xor esi, edx
- .text:00406849 shr ecx, 8
- .text:0040684C xor ecx, [esp+esi*4+444h+var_418]
- .text:00406850 inc edi
- .text:00406851 cmp edi, 0Bh
- .text:00406854 jb short loc_406840
- .text:00406856 not ecx
- ; Контрольная сумма правильная?
- .text:00406858 cmp ecx, [esp+444h+var_424]
Таблица для расчета CRC32
Внимательный читатель без труда опознает тут табличный расчет CRC32. Таким образом проверка серийника сводится к расчету CRC32 от первых 11 символов, последние 8 символов являются полученной контрольной суммой в верхнем регистре. Валидным серийником, например, может быть "FFFFFFFFFFF5E395A2E" или "0123456789AA1787DC9".
Программа успешно зарегистрирована
При вводе любого из них программа переходит в зарегистрированный режим работы со всеми доступными опциями. Хотите - напишите кейген сами, не хотите - воспользуйтесь онлайн сервисом CRC-32 Checksum Calculator для расчета "хвоста" серийника. В любом случае цель достигнута.
Просмотров: 1599 | Комментариев: 9
Метки: исследование защиты, HDD
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
ManHunter
(26.10.2021 в 16:35):
Musika, ковырял тут программу WinExt, она показывает активность, какие файлы были изменены, созданы и т.п. Может быть по ней можно отследить источник движухи.
newfuck
(21.09.2021 в 12:17):
Под х64 строки те же самые и заблокированные пароли аналогичные, всё патчится исправлением одного перехода.
voffka
(21.09.2021 в 10:53):
Версия устанавливается в зависимости от разрядности винды.
x86 1.40.327 x64 1.40.326 дистрибутив не обновлялся с 17 года.
Нужна х86 - распакуйте сетап InnoExtractor-ом и переименуйте файлы SsdReady,2.exe, ssdspy,2.sys, убрав ,2
x86 1.40.327 x64 1.40.326 дистрибутив не обновлялся с 17 года.
Нужна х86 - распакуйте сетап InnoExtractor-ом и переименуйте файлы SsdReady,2.exe, ssdspy,2.sys, убрав ,2
Вообще
(20.09.2021 в 10:10):
другая версия на офф.сайте
Musika
(18.09.2021 в 22:17):
Привет,
программа SSDLife Pro (2.5.82), показывает, что на SSD, постоянно, что- то пишется. Вроде всё, что можно отключено и тем не менее..
С помощью SSD Ready 1.40 Pro - выяснить не получается.
Может посоветуете инструмент, для "тонкого" отслеживания записи на SSD?
программа SSDLife Pro (2.5.82), показывает, что на SSD, постоянно, что- то пишется. Вроде всё, что можно отключено и тем не менее..
С помощью SSD Ready 1.40 Pro - выяснить не получается.
Может посоветуете инструмент, для "тонкого" отслеживания записи на SSD?
user
(14.09.2021 в 21:48):
Утиль двойного назначения.
Не знаю, как там для ssd-дисков,
но как монитор файловых операций вроде бы может быть полезна.
Слинкована для Vista+, но можно поправить значения в PE-заголовке,
тогда будет работать и в WinXP.
Это можно сделать либо ручками, либо используя Hiew32-плагин "PE_Win9x.HEM".
old-dos.ru/dl.php?id=22653
Не знаю, как там для ssd-дисков,
но как монитор файловых операций вроде бы может быть полезна.
Слинкована для Vista+, но можно поправить значения в PE-заголовке,
тогда будет работать и в WinXP.
Это можно сделать либо ручками, либо используя Hiew32-плагин "PE_Win9x.HEM".
old-dos.ru/dl.php?id=22653
voffka
(13.09.2021 в 13:54):
11-й символ тип лицензии 1,2,3 про,сервер,анлим соответственно
9-10-й символы количество 01-FF лицензий, в случае если тип лицензии 1 или 2
9-10-й символы количество 01-FF лицензий, в случае если тип лицензии 1 или 2
ManHunter
(13.09.2021 в 11:30):
Дистрибутив точно этот, проверил. Не менялся с момента оформления статьи.
newfuck
(13.09.2021 в 08:45):
скачал по ссылке "дистрибутив", установил, а прога мало того, что х64, так ещё и обфусцированна чем-то: exeinfo ничего не показывает, но глазами видно, что вообще код странный - отсутстуют вызовы "call" и т.п.
Добавить комментарий
Заполните форму для добавления комментария