Сьогодні я тобі розповім про те як зламати захист встановлену на програмі, в цій статті ми будемо зламувати програма яка створена для того що б її зламували. Такі ти зможеш

знайти на сайті www.crackmes.de or www.cracklab.ru. Ми будемо зламувати найпростішу захист. Скачай crackme#1 за цим лінком www.quickm.clan.su/my_first_crack.rar для злому цієї програми

нам знадобиться OllyDbg (шукай її на wasm.ru), знання асемблера (мінімальне) і прямі руки ( де взяти не знаю, дізнаєшся скажи.

Почнемо…

Распакуй архів з crackme # 1. В ньому ти знайдеш дві програми crack and crackme, crack — це вже крякнутая програма, файл crackme ти будеь зламувати.Запусти програму crackme (crack поки

не чіпай… ) і спробуй ввести будь-яке значення замість «Enter serial» і натиснути «Try!Cracker», програма виведе «Bad serial.Try yet» це означає те, що програма не крякнутая і працювати не буде. Тепер

запусти crack.exe замість «Enter serial» можеш ввести будь-яке значення, натисніть на кнопку та лицезрей текст у якому сказано те, що програма зламана. Твоя здача зробити з crackme — crack. Забіжу в

перед і скажу що для злому потрібно виправити лише один байтик і зберегти додаток до вже исправленым байтом, якщо ти зрозумів що зробити, то вперед — дій! Ну а тепер про все і

докладно… Для злому програми зазвичай використовується один з двох методів. Перший – виправлення n-ного байта і збереження програми з вже исправленым байтом, другий — написання кейгена

(більш складний ніж 1-ий). Зараз ми розберемо перший спосіб ( другий розберемо следуюшей статті). Значить мета зрозуміла, нам треба знайти і виправити n-ний байт так, що б при будь-якому програма

вводиться значення видавала повідомлення про те що реєстраційний код вірний. Тепер потрібно знайти той байт який нам треба виправити… Відкриваємо програму, вводимо будь-який номер і тиснемо на

«Try!Cracker» і бачимо повідомлення MessageBoxA з заголовком «CrackMe#1 by Shturmovik» та текстом «Bad serial.Try yet». Запускай OllDbg і відкривай в ньому crackme, тепер давай знайдемо в исходнике

програми інфу про «SendMessageA». Подивимося які функції виконує програма з цією процедурою… «DispatchMessageA» — це те що нам потрібно! Залишилося лише знайти байт який повинен бути

виправлено. Ми будемо працювати з текстом від мітки «DispatchMessageA» і до мітки «PostQuitMessage». Ось цей уривок коду:

PUSH EAX
CALL
JMP SHORT crackme.004010EE
MOV EAX,DWORD PTR SS:[EBP-44]
LEAVE
RETN 10
MOV EBP,ESP
ADD EBP,8
XOR ECX,ECX
XOR EDX,EDX
INC EDX
MOV EBX,DWORD PTR SS:[EBP]
INC CX
MOV AL,BYTE PTR DS:[ECX+EBX-1]
CMP AL,0
JE SHORT crackme.00401150
XOR AL,CL
SUB EBP,4
MOV EBX,DWORD PTR SS:[EBP]
MOV AH,BYTE PTR DS:[ECX+EBX-1]
XOR BX,BX
CMP AH,AL
JNZ SHORT crackme.00401148
INC BX
AND DX,BX
ADD EBP,4
JMP SHORT crackme.00401126
DEC DX
SUB EBP,8
RETN
PUSH EBP
MOV EBP,ESP
БМР DWORD PTR SS:[EBP+C],2
JNZ SHORT crackme.0040116B
PUSH 0

Тепер для того що б дізнатися про те, якою байтик потрібно видалити не потрібно повністю розкривати лістинг коду, і розуміти що в ньому робиться. Вся захист програм які використовують такий метод

захисту зводиться до такого коду на Delphi (для мене просто звично використовувати цю мову, тому і пишу на ньому: if then
Зареєструвати програму
else
Вивести повідомлення про неуспішну реєстрації…
За цим же принципом працює і ця програма… якщо уважно подивитися на код то можна побачити мітку переходу JMP, вся рядок коду виглядає таким чином «JMP SHORT 00401126».

Виділи її та натисни «Enter». Тебе перенесе на рядок «MOV EBX,DWORD PTR SS:[EBP]»… Я сподіваюся ти вже зрозумів що це той байт який потрібно замінити… На що? На «JZ SHORT 00401126».
Тепер давай збережемо крякнуту програму. Для цього клацніть правою кнопкою миші в будь-якому місці вихідного коду -> Copy to executable -> All Modification і зберігай… Тепер запусти і перевір її,

програма працює так само як і crack яку ти скачав в архіві. ВІТАЮ ТЕБЕ З УСПІШНИМ ЗЛОМОМ !!!.