Часть 1.
Введение:
Я уже читал много учебников по кракам и откровенно говоря, Я сам учился кракингу
читая такие пособия (и некоторые книги , но это не имеет значения). Большинство
таких учебников имеют несколько недостатков: они или слишком большие и содержат
много мусора, или слишком маленькие и даже не объясняют самих основ. Я решил
написать свой учебник который бы не содержал таких недостатков. Во всяком
случае, Я разделил туториал на три части:
Часть 1: Введение, инструменты и основы кракинга.
Часть 2: Практические тренировки, использование W32Dasm и HIEW.
Добро пожаловать в первую часть. ;-)
Предупреждение:
Я создал этот учебник только в информационных целях!
Большинство информации содержащейся в этом документе может быть использовано в
противозаконных целях!
Не пытайтесь сделать что-либо описанное в этом документе!
Если вы попытались сделать что-то в этом роде, вы один полностью несёте
ответственность за то, что вы сделали!
Если вы попали в неприятную ситуацию, то это случилось только по вашей вине!
Если вы намерены использовать эту информацию что-бы впечатлить ваших друзей,
оставте её более взрослым людям!
Если вы не согласны с этим, то дальше можете не читать!
Если вы взломали программу, и пытаетесь продать или одолжить крак бесплатно, то
это преступление!
Что такое кракинг?
Для меня, кракинг это:
"Позволить программе вести себя так, как вы это хотите, а не так как хочет кто
нибудь другой (програмист)"
Так что кракинг это изменение программ, для того что бы они работали так как вы
хотите. Вы можете достать десплатную демо версию программы, взломать её и
пользоваться... Но!!!! Я повторяю, если вы взломали программу и начинаете
продавать взломанную версию или просто одолжили её бесплатно, это уже
преступление!
После того как вы прочитаете все три части (это первая часть), вы почувствуете
огромную силу в ваших руках (в смысле мозгах). Ну, что начнёмс?
Инструменты
Нам понадобятся несколько прог...
Но не волнуйтесь их очень легко найти, т.к. они достаточно популярные:
Первая прога это "Win32 Disassembler", которая так же известна как "W32Dasm".
Win32 Дизассемблер позволяет вам:
Дизассемблить файлы - переводить программы в код ассемблера, или в машинный код.
Файлы которые могут быть дизассембленны в "W32Dasm":
exe, 386, com, cpl, drv, dll, fon, mpd, ocx, vbx, vbx and sys.
Загрузить процессы программы и отследить их.
Браузить по дизассембленному файлу в любую часть его кода.
Искать текст.
Выполнять, вставлять или удалять "jumps" & "calls".
Импортировать и экспортировать функции.
Показывать в HEX виде код файла.
Показывать стринговые, диалоговые и справочные списки.
Сохранять дизассемблерный исходник в текстовом формате.
Вторая прога которая вам понадобится это "Hiew", которая так же известна как "Hacker's
View". Hacker's View прога которая позволит вам:
Дизассемблить файлы.
Изменять и сохранять дизассембленные файлы.
Посмотреть файл в виде ASCII, Hex или ассемблерном виде.
Так же вы можете загрузить замечательную программу для взлома - "Soft-ICe". В
любом случае, она нам не потребуется в этом разделе учебника.
Превые шаги
Процесс взламывания можно разделить на 7 шагов:
Запустить взламываемую программу и изучить её стандартное "поведение".
Попытаться вычислить ключевые фразы и слова, а так же попытаться ввести пароль и
посмотреть как программа среагирует.
Открыть прогамму в W32Dasm и отдизассемблить её.
В дизассемблерном коде найдите фразу которую программа вам выдала при ошибке. В
большинстве случаев, вам прейдется икать ключевые слова такие как: password,
name, date, expired, time limit, wrong, entered и так далее.
Найдите и исследуйте генератор паролей, найдите защитный "маршрут" и изучите API
"звонки".
Попробуйте понять "прыгающий" механизм защиты.
Откройте программу в Hiew. Измените начальный "прыжок" на ему противоположный
или вообще выкинте его.
Запустите программу и посмотрите как она отреагирует на на ваши изменения.
Почувствуйте силу которую вы имеете, силу взлома ...
Изучите эти шаги очень хорошо, пока они не начнут сниться, т.к. вы будете
пользоваться ими в любой программе которую вы взламываете.
Основные понятия ассемблирования.
A. Регистры:
Регистры это переменные которые хранятся в процессоре. Процессор использует эти
переменные для основных математических и логических операций. Наиболее
используемые регистры это: eax, ebx, ecx and edx. Иногда вы увидите edi, esi,
esp, ebp. Существует три типа регистров: 32Bit регистры, 16Bit регистры и 8Bit
регистры. 32Bit регистры начинаются с "e", такие как eax. 16Bit регистры
приравнивают к 32Bit регистрам. Единственное их отличие эторазные размеры. 16Bit
регистры: ax, bx, cx, dx, di, si, sp, bp. 8Bit регистры: al, ah, bl, bh, cl, ch,
dl, dh. "l" - обозначает низшие 8 битов 16Bit регистра. "h" - обозначает высшие
8 битов 16Bit регистра.
B. Флаги:
Флаги это логические переменные (принимают значения 0 или 1). Флаги используются
процессором для внутренних логических и математических операций, с целью извлечь
результат операции. Наиболее важный флаг это Нулевой Флаг, который может
принимать значения ноль (0) или не ноль (1).
C. Code Flow
Когда вы анализируете часть кода, вы должны понять что процессор на самом деле
глупый, и всё что он делает это следует основным инструкциям, линия за линией.
Он делает то, что говорит ему код и он не может делать того, что не написано в
коде. Вот почему вы должны думать как процессор. Вы должны делать всё что делает
процессор, вы должны сравнивать регистры и переменные, выполнять "прыжки"(jump)
и "звонки"(call), подсчитывать основные математические операции, сохранять и
загружать значения регистра и т.д. ... Процессор имеет инструкционный указатель(instruction
pointer), который так же называется IP(это не Internet Protocol). Используя IP,
процессор направляет(указывает) инструкции тому, что должно запуститься.
Процессор так же выполняет инструкции которые изменяют ход кода.
Эти инструкции могут быть представлены "звонками"(call), "прыжками"(jumps) и
т.д. , которые зависят от нулевого флага.
В заключении
В этой части учебника мы изучили понятие взлома. Заставлять программу вести себя
так как вы того хотите, а не как того хочет программист. Мы так же познакомились
с наиболее популярными программами для взлома: W32Dasm, Hiew и SoftICE. И на
конец, мы изучили 7 основных шагов взлома.
Часть 2.
Введение:
В этой части (Вторая часть учебника) вы научитесь использовать такие проги как:
W32Dasm и HIEW. Так же мы взломаем одну
простинькую програмку.
Туториал разделен на три части:
Часть 1: Введение, инструменты и основы кракинга.
Часть 2: Практические тренировки, использование W32Dasm и HIEW.
Часть 3: Генераторы ключей.
Добро пожаловать во вторую часть. ;-)
Предупреждение:
Я создал этот учебник только в информационных целях!
Большинство информации содержащейся в этом документе может быть использовано в
противозаконных целях!
Не пытайтесь сделать что-либо описанное в этом документе!
Если вы попытались сделать что-то в этом роде, вы один полностью несёте
ответственность за то, что вы сделали!
Если вы попали в неприятную ситуацию, то это случилось только по вашей вине!
Если вы намерены использовать эту информацию что-бы впечатлить ваших друзей,
оставте её более взрослым людям!
Если вы не согласны с этим, то дальше можете не читать!
Если вы взломали программу, и пытаетесь продать или одолжить крак бесплатно, то
это преступление!
7 шагов взлома
Вы уже видели эти семь шагов в предыдущей части учебника, но они очень важны.
Если вы помните эти шаги, то это уже 40% успеха во взламывании программы.
Вот они :
Запустить взламываемую программу и изучить её стандартное "поведение".
Попытаться вычислить ключевые фразы и слова, а так же попытаться ввести пароль и
посмотреть как программа среагирует.
Открыть прогамму в W32Dasm и отдизассемблить её.
В дизассемблерном коде найдите фразу которую программа вам выдала при ошибке. В
большинстве случаев, вам прейдется икать ключевые слова такие как: password,
name, date, expired, time limit, wrong, entered и так далее.
Найдите и исследуйте генератор паролей, найдите защитный "маршрут" и изучите API
"звонки".
Попробуйте понять "прыгающий" механизм защиты.
Откройте программу в Hiew. Измените начальный "прыжок" на ему противоположный
или вообще выкинте его.
Запустите программу и посмотрите как она отреагирует на на ваши изменения.
Почувствуйте силу которую вы имеете, силу взлома ...
Изучите эти шаги очень хорошо, пока они не начнут сниться, т.к. вы будете
пользоваться ими в любой программе которую вы взламываете.
Дополнительная программа (взламываемая). Сейчас мы будем взламывать вашу первую
программу. Но до этого вам надо закачать её здесь. Теперь, когда вы её закачали,
можно приступать!
Взламывание первой программы(RGtimer).
Сейчас мы будемс выполнять каждый из семи пунктов:
Шаг 1: Запускаем программу:
Так, что мы видем .... Программа выдаёт сообщение о том, что она будет работать
45 дней, появляется иконка в систем трее. Теперь кликаем правой кнопкой мыши по
иконке и выбираем "Registration". Вводим любой код и видим как нас посылают ...
Ну ничаго сейчас мы всё исправим :-)
Шаг 2: Дизасемблим программу в W32Dasm.
Жмём Search\Find text вводим "Sorry, The ..." (без ...)
Шаг 3: Идём вверх до первого "je" ( Это то место где программа прыгает на не
правильный диалог)
////////////////////// Код ///////////////////////////
:0045FEB6 E83D70FAFF_____________call
00406EF8
:0045FEBB 8B45F4__________________mov eax, dword ptr [ebp-0C]
:0045FEBE 8B55F8__________________mov edx, dword ptr [ebp-08]
:0045FEC1 E8BE3DFAFF______________call 00403C84
:0045FEC6 741A____________________je 0045FEE2
:0045FEC8 6A00____________________push 00000000
:0045FECA 668B0D3C004600__________mov cx, word ptr [0046003C]
:0045FED1 B202____________________mov dl, 02
* Possible StringData Ref from Code Obj ->"Sorry, The Registration Key is "
________________________________________->"Invalid."
:0045FED3 B848004600______________mov eax, 00460048
:0045FED8 E82763FDFF______________call 00436204
:0045FEDD E91D010000______________jmp 0045FFFF
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0045FEC6(C)
|
:0045FEE2 6A00____________________push 00000000
:0045FEE4 668B0D3C004600__________mov cx, word ptr [0046003C]
:0045FEEB B202____________________mov dl, 02
* Possible StringData Ref from Code Obj ->"Thank you for registering."
|
:0045FEED B878004600______________mov eax, 00460078
:0045FEF2 E80D63FDFF______________call 00436204
:0045FEF7 8D55EC__________________lea edx, dword ptr [ebp-14]
:0045FEFA 8B83E0010000____________mov eax, dword ptr [ebx+000001E0]
:0045FF00 E88BE8FBFF______________call 0041E790
////////////////////// Code snip ///////////////////////////
Для того чтобы программа шла на диалог разблокирования нам надо всего лишь
поменять "je" на "jne".
Шаг 4: Побайтовое редактирование...
Начнёмс :-)
Открываем Hiew.
В нем EXE файл программы(ReallyGood.exe). {Лучше всего скопируйте его как 1.EXE
и уже его открывайтее. Делается это на случай если вы запорите EXEшник, когда
будете его редактировать в hiev}
Находим адрес строки в W32Dasm (это находится в статус баре и начинается с '@').
1. Жмём F5 в Hiew.
2. Вводим 0005F2C6 клацаем ENTER.
3. Жмём F3 - для редактирования.
4. Изменяем 74 на 75 (получится "jne").
5. Жмём F9 - сохраняем.
6. Жмём F10 - выходим.
7. Запускаем программу, смотрим результат.
Если у вас появились какие-то вопросы пишите на мыло мыло. Мы постораемся ответить на ваши вотросы.
5. В заключении
Ну вот ваша первая взломанная прога !!! Но не все прграммы кракаются так легко,
но ... Главное практика.
P.S.
Вот исходник крака на паскале :
Program Crack;
uses crt;
const A:array[1..1] of Record
A:longint;
B:Byte;
end=((A:$5F2C6;B:$75));
var ch:char;
I:byte;
F:file;
FN:file of byte;
Size:longint;
Begin
clrscr;
textcolor(10);
Writeln('Cracked by Mr.Mad & Doberman !');
Assign(F,'ReallyGood.exe');
{$I-}reset(F,1);{$I+}
If IOresult <> 0 then begin
writeln('File not found !!!');
halt(1);
end;
for I:=1 to 1 do begin
seek(F,A[i].A);
Ch:=char(A[i].B);
Blockwrite(F,Ch,1);
End;
Write(' Cracked !!!');
readln;
end.