Найти в Дзене
mamaich

Используем ArtMoney для обмана WibuKey

В прошлом посте я описал программу, у которой при извлечении ключа защиты WibuKey на экране появлялось сообщение: Данное сообщение можно 3 раза проигнорировать, после чего окно меняется на новое: и проигнорировать отсуствие ключа уже не удастся. А что, если взять программу вроде ArtMoney и попробовать найти счетчик этих трех попыток? Итак, беру свой "Windows Game Cracker" (аналог ArtMoney, написанный мной на C++Builder еще в прошлом тысячелетии), выбираем тип "DWORD" - защита у нас 32-битная, так что вряд ли использует 16-битные счетчики и делаем поиск числа "3" (у нас же три попытки): В окне защиты жмем "игнорировать", ждем пока оно появится снова (ровно через 5 секунд), ищем "2", снова ждем окно, игнорируем, ищем "1". Жмем "игнорировать", и в окне программы замечаем, что осталось всего два адреса, причем второй содержит ноль - то есть он очень похож на тот адрес, где содержится счетчик: Пока окно защиты снова не вылезло на экран - меняем ноль на 999. Проверяем - работает! Окно снов

В прошлом посте я описал программу, у которой при извлечении ключа защиты WibuKey на экране появлялось сообщение:

Данное сообщение можно 3 раза проигнорировать, после чего окно меняется на новое:

-2

и проигнорировать отсуствие ключа уже не удастся.

А что, если взять программу вроде ArtMoney и попробовать найти счетчик этих трех попыток?

Итак, беру свой "Windows Game Cracker" (аналог ArtMoney, написанный мной на C++Builder еще в прошлом тысячелетии), выбираем тип "DWORD" - защита у нас 32-битная, так что вряд ли использует 16-битные счетчики и делаем поиск числа "3" (у нас же три попытки):

-3

В окне защиты жмем "игнорировать", ждем пока оно появится снова (ровно через 5 секунд), ищем "2", снова ждем окно, игнорируем, ищем "1". Жмем "игнорировать", и в окне программы замечаем, что осталось всего два адреса, причем второй содержит ноль - то есть он очень похож на тот адрес, где содержится счетчик:

-4

Пока окно защиты снова не вылезло на экран - меняем ноль на 999. Проверяем - работает! Окно снова содержит кнопку "игнорировать".

Ради интереса смотрим, а что же находится рядом с адресом 2C0DD8?

-5

0x03E6 - это значение 998, наш счетчик (это я нажал в окне "игнорировать" и он уменьшился на 1). А следом идет константа 0x1388 - это 5000 в десятичной системе. Вспоминаем, что окно "верните ключ" появляется ровно через 5 секунд и для проверки правим 0x1388 на 0x7FFFFFFF.
Помогает! Окно больше нам не надоедает.

Итак, простейшая утилита для взлома игр - помогла "обмануть" защиту WibuKey и продлить жизнь приложения с вынутым ключом с 15 секунд до практически бесконечности.

Да, внутренние проверки наличия ключа, разбросанные по коду программы, никуда не делись - но тут у нас тоже "999" попыток игнорирования вместо трёх (лучше сразу поставить 0x7FFFFFFF - до конца жизни точно хватит). И зашифрованные куски кода тоже никуда не делись - но о них в другой раз.