00489F3C |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4]
00489F3F |. 0FB67438 FF |MOVZX ESI,BYTE PTR DS:[EAX+EDI-1] ; берём по одной букве из нашего имени
00489F44 |. 8D55 F0 |LEA EDX,DWORD PTR SS:[EBP-10]
00489F47 |. 8BC6 |MOV EAX,ESI ; тут что-то каму-то передаём, посмотрите в отладчике :)
00489F49 |. E8 26FFFFFF |CALL disk.00489E74 ; что-то там вызываем :))
00489F4E |. 8B55 F0 |MOV EDX,DWORD PTR SS:[EBP-10]
00489F51 |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C]
00489F54 |. E8 03ADF7FF |CALL disk.00404C5C ; что-то там вызываем :))
00489F59 |. 47 |INC EDI ; увеличиваем EDI на 1
00489F5A |. 4B |DEC EBX
00489F5B |.^75 DF JNZ SHORT disk.00489F3C ; looping (повторяем пока не закончатся знаки в нашем имени)
Вот это место где происходит вся генерация нашего серийника. Тут в частности надо знать что находится в EDI. А то, что находится в EDI я посмотрел в SoftICE. Там увидел вот что - CMW273333- Вот это и есть гвоздь программы :) Ну а дальше всё просто:
прога берёт наше NAME, затем смотрит из скоки символов она состоит, добавляет длину имени к CMW273333, ну а дальше после ’-’ идёт HEX код нашего имени. Сложно? :)) ОК вот пример:
Допустим мы ввели произвольное имя specz :)) HEX код этого имени (737065637A). specz 25 then //ограничиваем длину имени
begin //ограничиваем длину имени
Edit2.Text:=’Имя не больше 25 знаков’; //ограничиваем длину имени
exit;
end;
scet:=33+len; // добавляем к 33 длину нашего имени
Edit2.Text:=’CMW2733’+inttostr(scet)+’-’; // вывод всего безобразия в Edit2
for i:=1 to len do // тут начинается сама процедура
begin
t:=Ord(name[i]); // перевод имени в ASCII
last:=InttoHex(t, 2); // перевод имени в HEX
Edit2.Text:= Edit2.Text+(last); // вывод всего безобразия в Edit2
end;
end;
Вот и вся любовь. Если кому впадлу использовать функцию copy&paste тогда вот !работающий! кейген :). За статью не отвечаю, ибо ещё сам являюсь в этом деле newbie поэтому могут быть ашипки :))..
Будут вопросы мыльте, всегда рад принять пару тысяч писем со спамом :)).
Adioz...