Привіт, сьогодні я тобі розкажу як зламати програму і написати до неї кейген. Це мій перший досвід написання кейгена для програми, за цим прошу не ображати 8). Після довгих пошуків програми яка мені по зубах, я знайшов програмку Melody і сьогодні ми будемо зламувати саме її! Завантажити її ти можеш за посиланням www.lighttek.com/melody.htm. З інструментів ми сьогодні будемо використовувати тільки Delphi ( для написання кейгена) і OllyDBG.

Огляд пацієнта…

Melody 1.52 — Melody is a simple audio player. The program supports WAV, MP3, MIDI, MOD, IT, XM, S3, ME, MPP, MDZ formats and audio CD disks.
2 mouse buttons are used for navigation:
One left click opens a disk or folder, and starts playing. Clicking the right button in any place takes you up one level in the folder tree. Це про неї каже автор 8) Якщо ти не знаєш англ. в цілому перекладаю, ця програма для програвання WAV, MP3, MIDI, MOD, IT, XM, S3, ME, MPP, MDZ і аудіо СD. Давай пощелкаем по всяким кнопочках у цій програмі, дощелкались до «Register your copy now !». Програма відкриває нове віконце «Registration»
Тепер ти можеш зробити двома способами… або натиснути «Online Registration» заплатити за програму і користуватися їй, ну або прочитати статтю до кінця і написати кейген 8). Як ти бачиш в новому вікні просять ввести логін і паоль… їх у нас немає, але скоро з’являться (достатньо знати одну пару логіна/пароля що б зарегестрировать цю програму на будь-якому кол-ве комп’ютерів …)

Пишемо кейген …
Кейген буде написаний на Delphi, але будуть використовуватись асемблерні вставки… Вантажимо нашу програму в OllyDBG і переходимо на адресу 0044735D і дивимося весь код адреси 00447380. Саме в ньому відбувається генерація пароля.

MOV EDX,1; EDX = 1
MOV ECX,DWORD PTR SS:[EBP-8]; В ECX поміщаємо ім’я змінної
MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]; ECX hex = значенням букви імені
ADD ESI,ECX; ESI + ECX майже пароль 8)

INC EDX
DEC EAX; EAX — 1
JNZ SHORT melody.00447362; перехід якщо прапор нуля не встановлено
MOV DWORD PTR SS:[EBP-14],ESI; Результат копіюється в змінну
FILD DWORD PTR SS:[EBP-14]
CALL melody.004029C8
MOV EDX,EAX
SHL EAX,7; перетворюємо
ADD EAX,EDX; EAX + EDX = пароль

Так само в цій програмі для генерація пароля кожному символу присвоюється своє цифрове значення. Якщо в логіні використовуються два символи, то пароль виглядає наступним чином: Символ1 + Символ2 = пароль, якщо три: Символ1 + Символ2 + Символ3 = пароль і т. д. Наприклад для логіна ABC пароль буде 25542 (8385+8514+8643) і для CBA пароль 25542 (від перестановки місць доданків сума не змінюється 8). Я думаю що ти тепер зрозумів як генерується пароль у цій програмі. Тепер ми почнемо писати кейген, як я вже говорив компілятором я обрав Delphi. Давай запускай Дельфі і створюй новий проект, тепер поклади на формі 2 Edit’a (в обох я змінив ім’я, один pwd інший name ) і 1 Button (Можеш використовувати будь-які свої компоненти, але приклад я буду приводити саме на цих ). Візуальна частина нашої програми готова, тепер треба все це запрограмувати 8). Для початку давай створимо функцію генерування коду :

function Vzlom(User:String; passwd: Integer):String;
begin
asm //ассемблерная вставка генерація пароля
XOR ESI,ESI
MOV EDX,1
MOV EAX,[пароль]

@proc1:
MOV ECX,[User]
MOVZX ECX,[ECX+EDX-1]
ADD ESI,ECX
INC EDX
DEC EAX
JNZ @proc1

MOV DWORD PTR SS:[пароль],ESI
FILD DWORD PTR SS:[пароль]

PUSH EAX
FISTP DWORD PTR SS:[ESP]
WAIT
POP EAX

MOV EDX,EAX
SHL EAX,7
ADD EAX,EDX

MOV [пароль],EAX
XOR EAX,EAX
XOR ESI,ESI //у цій вставці ми вополнили генерування пароля для програми Melody v 1.52
end;
Result:=IntToStr(passwd); //перетворення 8)
end;

У процедурі реєстрації виконується код за допомогою якого програма Melody генерує паролі ( дивись його в OllyDBG починаючи з адреси 0044735D і до 00447380 ) Тепер давай напишемо
процедуру виведення пароля, для цього двічі клацни по батону (Button1) і встав у вікні такий код :

var //задамо значення
nm: String;
pass: Integer;
begin //ну поїхали 8)
nm:=name.Text;
if nm”
then begin //якщо поле ім’я заповнено то вивести пароль до даного імені
pass:=LenGth(nm);
pwd.Text:=(Vzlom(nm,pass));
end
else begin //якщо поля ім’я не заповнено відправити вводити ім’я!
Application.MessageBox(‘Введи ім’я’,’Помилка’,mb_ok)
end;

Тепер тобі залишилося лише скомпилить crack і роздавати своїм друзям 8) Якщо у тебе не виходить написати кейген то скачай його з мого хом’яка… www.ksail.fyw-team.info

ЗИ. Ця програма зламується і методом «заміни байти» (про нього я писав у своїй попередній статті), Твоє домашнє завдання зламати її цим методом!

Всі питання та замовлення слати на Ksail[at]yw-team.info ну або в ацку стукайте 729-039…