Всем привет!
В этой небольшой статейке,я хочу рассказать вам о способах взлома таких защит, как:
1) Проверка ключа
2) Проверка по имени и паролю
Для взлома программ нам будет нужен любой отладчик.
1) Как взломать проверку серийника:
Есть два способа - поиск ключа в коде или патч.
Открываем программу, которая требует ключ в отладчике.
Запустим ее и посмотрим, какие сообщения появляются при вводе неправильного ключа:
IMAGE http://i48.fastpic.ru/big/2013/0623/a4/56fee96513e501bfb79999b713f195a4.jpg
Теперь поищем эту строчку в коде. Для этого:
1 Жмем на пустое пространство рядом с кодом правой кнопкой и выбираем поиск строк:
IMAGE http://i47.fastpic.ru/big/2013/0623/76/ef8a8ee2280186dfe6c80658e7904b76.jpg
2 Находим нашу строчку:
IMAGE http://i47.fastpic.ru/big/2013/0623/a7/26f15d84579e9de342f14e374cf526a7.jpg
Делаем по ней двойной клик:
IMAGE http://i47.fastpic.ru/big/2013/0623/83/3929aba5079f595325d3f909868faf83.jpg
Теперь давайте разбираться.
Начинается все с функции GetDlgItemA.
Она получает введенный серийник из текст бокса и помещает его в адрес, который указан в буфере (передается, как параметр фунцкии).
Далее, функция strcmpa сверяет наш серийник с правильным, и в зависимости от результата выдает нам сообщение Wrong password или You got it.
Давайте посмотрим на параметры функции strcmpa.
Первый - введенный серийник
Второй - правильный серийник.
Вот мы и разобрались, я надесюь, как проходит процедура проверки.
Теперь, просто копируем правильный серийник и вводим его в прогу.
Этот метод называется Keyfish или поиск ключа.
Теперь сделаем патч. Что такое патч?
Говоря официальным языком - это программа, коротая выпускается авторами софта после официального релиза. Как правило, это исправление багов, уязвимостей и т.д.
На языке "крекеров" патч - прога, которая изменяет код регистрации таким образом, что можно вводить любой ключ и прога зарегается.
Давайте сделаем его! Опять посмотрим в функцию strcmpa.
Как я уже говорил, ей передаются два параметра - правильный ключ и введенный ключ.
Сделаем так, чтобы она сверяла введенным ключ с ним же.
Чтобы это сделать, надо:
1 Скопировать адрес введенного ключа:
IMAGE http://i47.fastpic.ru/big/2013/0623/bf/0b4664f29c4dd89f7764f797c06ad5bf.jpg
2 Два раза нажать на строчку с правильным ключем:
IMAGE http://i46.fastpic.ru/big/2013/0623/02/338bfd950ceb26f073f3234fd212cb02.jpg
3 Поменять адрес на тот, который мы скопировали (предварительно обработанный в блокноте):
IMAGE http://i48.fastpic.ru/big/2013/0623/e9/21f5b6814d9acfe703f3c69d0ea33ae9.jpg
Теперь прога будет регаться при любом ключе.
Теперь сохраняем наши изменения:
IMAGE http://i46.fastpic.ru/big/2013/0623/cc/daeaa1f6d0482c0f3ddc9e273472bfcc.jpg
IMAGE http://i46.fastpic.ru/big/2013/0623/ee/fd3f4fb3a17601d817d5f16e179264ee.jpg
IMAGE http://i46.fastpic.ru/big/2013/0623/d1/553419281ab7553aada05a7e97c829d1.jpg
НУ и выбираем путь для сохранения:
IMAGE http://i47.fastpic.ru/big/2013/0623/2c/f5f5d761b9f5f6ab1c41a10653a6422c.jpg
Все! Поздравляю! Вы сделали свой первый кряк.
Можете запустить и проверить:
IMAGE http://i47.fastpic.ru/big/2013/0623/bf/56932e53706760ede37f83fec59eccbf.jpg
В этом пункте я взломал крякми от фантома #1.
Пока вы радовались, я успел открыть вторую бутылку колы, и мы продолжаем.
2) Имя+серийник. Пишем кейген.
Первую часть я начал с практики специально, чтобы вам было не скучно.
Теперь нудная теория.
Сущетсует много типов программ, которые пишутся крекерами для юзеров, и помогают им "хакать" программы.
Такие проги называют - лекарство (А почему Ы? Чтобы никто не догадался )
Их бывает несколько видов:
Кряк - измененный EXE файл, который нужно скопировать с заменой в папку с программой. Т.е то, что мы сделали в первой части
Патч - программа, которая сразу после запуска внедряется в код программы и изменяет его на лету.
Кейген - генератор правильный серийников для программы
И еще много других....
Итак, ломаем еще один крякмис:
http://rghost.ru/46970705
Каждый взлом начинается с анализа.
1) Надо определить на каком языке написана программа.
Для этого используем программу PEiD (можно найти на exelab.ru):
IMAGE http://i47.fastpic.ru/big/2013/0623/01/4fbc93695a1cde77c4bb3fb455ca2101.jpg
2) Запускаем прогу и исследуем ее:
IMAGE http://i46.fastpic.ru/big/2013/0624/d5/3564e9137cb78f777e088fcacbefb0d5.jpg
Окей. Небольшое исследование есть. Переходи к отладчику/
Теперь поступим по хацекрски.
Текст сообщения о неправильном вводе ключа в реальных программа, скорее всего, скрыт.
Поэтому будем ловить функцию GetDlgItemTextA.
Для этого жмем на поле рядом с кодом правой кнопкой мыши:
IMAGE http://i46.fastpic.ru/big/2013/0624/70/558d6ce3c32eb241856474c5ef2b5e70.jpg
Появится список функций.
Ищем в нем функцию GetDlgItemTextA и жмем на нее два раза:
IMAGE http://i47.fastpic.ru/big/2013/0624/21/155cb83369cc04eabdf6f37e9699ad21.jpg
Попадаем в такой участок кода:
IMAGE http://i47.fastpic.ru/big/2013/0624/56/9f576b79ab033047ddd56eaac268cc56.jpg
Давайте разбираться!
Функция GetDlgItemTextA получает введенное имя и размещает его в адрес, укзанный в параметре Buffer.
В EAX кладется длина имени.
Далее идет проверка, что имя в пределе 24 символов.
А вот теперь - алгоритм генерации серийника.
MOV EDI,hackereh.004062A0 - кладем наше имя в EDI
MOV EDX,DEADC0DE - кладем в EDX DEADC0DEh
MOVSX EAX,BYTE PTR DS:[ECX+EDI] - кладем один символ нашего имени в EAX (ECX - позиция символа)
ADD EAX,EDX - Добавляем к нашему символу DEADC0DEh.
Результат кладем в EAX.
IMUL EAX,EAX,666 - умножаем EAX на 666h, и результат - в EAX
ADD EDX,EAX - добавляем к DEADC0DE все ту хрень, которая лежит в EAX
SUB EAX,777 - вычитаем из EAX 777h
INC ECX - увеличиваем позицию символа
CMP ECX,EBX - Есть ли еще символы в имени?
JNZ SHORT hackereh.0040122C - Если есть, то прыгаем назад, а если нет, то идем вперед.
Отлично.
Теперь можем написать кейген:
source:
Код:
#include
#include
#include
#include
using
namespace
std;
int main()
{
char
name [
40
];
unsigned
int
DEAD =
0xDEADC0DE
;
unsigned
int
Serial =
0
;
cout >name;
for
(
int
i=
0
;i<
strlen
(name);i++){
Serial=(((
int
)name[i]+DEAD)*
0x666
);
DEAD+=Serial;
Serial-=
0x777
;
}
cout<<
"Your serial"
<<endl;
cout<<Serial<<endl;
getch
();
}
Вот и все. Мы разобрали 2 основных типа защит, на основе простых крякми.
P.S Статья написана по просьбе Irenica
P.S.S Тем, кого заинтересовало - рекомендую почитать сей файл:
ТЫК
Пароль: exelab.ru