Пишем КейГен для IDentify — Version 1.1

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Оформил: DeeCo

Автор: http://www.cracklab.narod.ru

Адрес: http://www.imptec.com

Вступление:

Я так и не разобрался чего делает эта прога, понял только, что стоит она $15 а это 2 моих месячных стипендии. Я решил н ждать 2 месяца, а получить прогу уже сейчас 🙂

Поехали:

Ставим Брекпоинт:

bpx GetWindowTextA

нажимаем 1 раз F5 а затем 4 раза F12 чтобы выйти из вложенных функций, мы окажемся здесь:

015F:004021E0 E865110200 CALL 0042334A

015F:004021E5 83EC04 SUB ESP,04

015F:004021E8 8B45F0 MOV EAX,[EBP-10]

015F:004021EB 83C060 ADD EAX,60

015F:004021EE 8965E8 MOV [EBP-18],ESP

015F:004021F1 50 PUSH EAX

015F:004021F2 8B4DE8 MOV ECX,[EBP-18]

015F:004021F5 E88B200200 CALL 00424285

015F:004021FA C745FC00000000 MOV DWORD PTR [EBP-04],00000000

015F:00402201 C745FCFFFFFFFF MOV DWORD PTR [EBP-04],FFFFFFFF

015F:00402208 8D4DE4 LEA ECX,[EBP-1C]

015F:0040220B 51 PUSH ECX

015F:0040220C 8B4DF0 MOV ECX,[EBP-10]

015F:0040220F E89C000000 CALL 004022B0 <--генерация правильного СН по имени

Зайдём в последнюю функцию(F8):

015F:004022C1 64892500000000 MOV FS:[00000000],ESP

015F:004022C8 83EC48 SUB ESP,48

015F:004022CB C745FC01000000 MOV DWORD PTR [EBP-04],00000001

015F:004022D2 56 PUSH ESI

015F:004022D3 8D4DF0 LEA ECX,[EBP-10]

015F:004022D6 33F6 XOR ESI,ESI

015F:004022D8 8975EC MOV [EBP-14],ESI

015F:004022DB E8951F0200 CALL 00424275

015F:004022E0 8B450C MOV EAX,[EBP 0C]

015F:004022E3 33D2 XOR EDX,EDX <--обнулили счётчик цикла

015F:004022E5 C645FC02 MOV BYTE PTR [EBP-04],02

015F:004022E9 8B48F8 MOV ECX,[EAX-08] <--Длинна имени

015F:004022EC 3BD1 CMP EDX,ECX <--конец цикла?

015F:004022EE 730D JAE 004022FD <--прыгаем

015F:004022F0 8B450C MOV EAX,[EBP 0C]

015F:004022F3 42 INC EDX

015F:004022F4 0FBE4410FF MOVSX EAX,BYTE PTR [EDX EAX-01] <--по очереди в цикле загружаем в EAX каждый символ имени и...

015F:004022F9 03F0 ADD ESI,EAX <--суммируем все символы в ESI

015F:004022FB EBEF JMP 004022EC <--повтор цикла

Т.Е. после выполнения вышеописанного кода у нас в ESI сумма всех символов имени, а в ECX Длинна имени. Смотрим дальше:

015F:004022FD 83C105 ADD ECX,05

015F:00402300 83C605 ADD ESI,05

015F:00402303 0FAFCE IMUL ECX,ESI

015F:00402306 8D1489 LEA EDX,[ECX*4 ECX]

015F:00402309 8BC1 MOV EAX,ECX

015F:0040230B 6A0A PUSH 0A

015F:0040230D 8D0C90 LEA ECX,[EDX*4 EAX] <-- ECX=EDX*4 EAX

015F:00402310 8D34C8 LEA ESI,[ECX*8 EAX] <-- ESI=ECX*8 EAX

015F:00402313 8D1470 LEA EDX,[ESI*2 EAX] <-- EDX=ESI*2 EAX

Тут идут математические действия очень простые. Аналогично такому выражению: EDX=(( ((сумма_всех_символов 5)*(длинна_имени 5)*5) *4 (сумма_всех_символов 5)*(длинна_имени 5))*8 (сумма_всех_символов 5)*(длинна_имени 5))*2 (сумма_всех_символов 5)*(длинна_имени 5)

Затем мы видим:

015F:00402319 50 PUSH EAX

015F:0040231A 52 PUSH EDX <--сохранили EDX

015F:0040231B E8207C0100 CALL 00419F40 <--функция перевода EDX из 16-ричной в 10-чную систему и запись результата в виде текстовой строки.

015F:00402320 83C40C ADD ESP,0C

015F:00402323 8D4DF0 LEA ECX,[EBP-10]

015F:00402326 68F8924300 PUSH 004392F8

015F:0040232B E8ED210200 CALL 0042451D <--Вначале СН дописываем два символа "2D"

И получившаяся строка и есть правильный СН. УрА!

Я написал на C кейген, вот он:

#include

#include

void main()

{

char *name;

long serial,sum=0;

int i;

cout<<"IDentify! - Version 1.1 KeyGen"<<"\n";

cout<<"CrAcKeD bY VaLLk0r [PTDS]"<<"\n";

cout<<"http://vallkor.chat.ru"<<"\n";

cout<<"Enter your name:";

cin>>name;

for (i=0;name[i]!=0;i )

{

sum =name[i];

}

serial=((((sum 5)*(i 5)*5) *4 (sum 5)*(i 5))*8 (sum 5)*(i 5))*2 (sum 5)*(i 5);

cout<<"\n"<<"Serial: 2D"<

getch();

}

Для моего имени (vallkor) СН оказался: 2D3124224

Вводим эти данные и мы зарегестрированные пользователи.

ВсЁ!

Исследовал и наваял туториал:

vallkor //PTDS

E-mail: vallkor@chat.ru (vallkor@etel.dn.ua)

Page: http://vallkor.chat.ru

{/codecitation}

Добавить комментарий