Jump to content
Tuts 4 You

[Keygenme] Keygenme #3 - Levis


Recommended Posts

Posted (edited)

Just another keygeme, with easy level

Try to make a kaygen for it biggrin.png

Language: Delphi

Level: 3/10

Packer: N/A

used hash/encryption: N/A

Screenshot:

712040655ScreenHunter_02_Apr._06_20.46.jpg

Download:

Good luck!!!

keygenme#3.zip

Edited by Levis
Posted (edited)

didnt you learn anything from errors of your last keygenme?

again full of bugs, increase the input buffers or limit the input itself or check what happens with special characters!

0012F224 00 00 00 00 00 00 00 00 00 00 00 00 E8 00 00 00 ............è...

0012F234 F0 00 00 00 FC 00 00 00 F0 00 00 00 C2 F2 12 00 ð...ü...ð...Âò.

0012F244 E8 00 00 00 E4 00 00 00 FB 00 00 00 EB 00 00 00 è...ä...û...ë...

0012F254 F4 00 00 00 F3 00 00 00 DE F2 12 00 E9 00 00 00 ô...ó...Þò.é...

0012F264 F7 00 00 00 F8 00 00 00 E8 00 00 00 F2 F2 12 00 ÷...ø...è...òò.

0012F274 FA 00 00 00 F4 00 00 00 EE 00 00 00 F6 00 00 00 ú...ô...î...ö...

0012F284 F4 00 00 00 E3 00 00 00 FC 00 00 00 F4 00 00 00 ô...ã...ü...ô...

0012F294 CC 00 00 00 C7 00 00 00 D5 00 00 00 D0 00 00 00 Ì...Ç...Õ...Ð...

0012F2A4 CB 00 00 00 C6 00 00 00 D4 00 00 00 CF 00 00 00 Ë...Æ...Ô...Ï...

0012F2B4 CA 00 00 00 C5 00 00 00 D3 00 00 00 CE 00 00 00 Ê...Å...Ó...Î...

0012F2C4 C9 00 00 00 C4 00 00 00 D2 00 00 00 CD 00 00 00 É...Ä...Ò...Í...

0012F2D4 C8 00 00 00 C3 00 00 00 D1 00 00 00 CC 00 00 00 È...Ã...Ñ...Ì...

0012F2E4 C7 00 00 00 D5 00 00 00 D0 00 00 00 CB 00 00 00 Ç...Õ...Ð...Ë...

0012F2F4 C6 00 00 00 D4 Æ...Ô

Key/combo:

Levis >> YrivfCJQELS

sama >> fnznAFKPB

SnDBoard >> FaQObneqICPJDQKER

Edited by sama
  • 4 weeks later...
Posted

Yea.. error in the code where you check if a character is between 'A' .. 'Z','a'..'z' or '0'..'9'.. if its not, the return value (=EDI) is undefined (pointer value), which messes up the rest of the keygen..

Departure
Posted

Hmm just looking at the Key combo's by sama I can tell atleast the first part of the serial a is simple Char replacement, example char "a" = "n" and char "s" = "f" ect.. ect.. Second part seems to be all uppercase and probably relies on the first part. I wasn't going to touch this because of the reported bugs. But I will try it out anyway

Departure
Posted

Username: Departure

Password: QrcnegherJESNIDRMHC

Departure
Posted (edited)

Delphi source code to Keygen... A little messy I know, and I really shouldn't have ripped the asm....

// rot13 Function taken from Stackoverflow
function ROT13(Str: string):String;
const
OrdBigA = Ord('A');
OrdBigZ = Ord('Z');
OrdSmlA = Ord('a');
OrdSmlZ = Ord('z');
var
i, o: integer;
begin
for i := 1 to length(Str) do
begin
o := Ord(Str[i]);
if InRange(o, OrdBigA, OrdBigZ) then
Result := Result + xxx(OrdBigA + (o - OrdBigA + 13) mod 26)
else if InRange(o, OrdSmlA, OrdSmlZ) then
Result := Result + xxx(OrdSmlA + (o - OrdSmlA + 13) mod 26);
end;
end;procedure TForm1.btnGenClick(Sender: TObject);
var
szName, szFinal: string;
i, Sum, Sum2: Integer;
iChar: Dword;
begin
Sum:= 0;
Sum2:= 0; szName:= edtName.Text; for i:=1 to Length(szName) do
begin
sum:= Sum + Ord(szName[i]);
end; szFinal:= ROT13(szName); asm
PUSHAD;
MOV EBX, $41;
MOV EAX,sum;
MOV ECX,$13;
CDQ;
IDIV ECX;
ADD EBX,EDX;
MOV iChar, EBX;
PUSHAD;
end; szFinal:= szFinal + Char(iChar); Sum2:= $82 + iChar; for i:=0 to Pred(Length(szName)) do
begin
asm
PUSHAD;
MOV EAX, $41;
MOV ECX,EAX;
MOV EAX,sum;
ADD EAX,sum2;
PUSH ECX;
MOV ECX,$13;
CDQ;
IDIV ECX;
POP ECX;
ADD ECX,EDX;
MOV Sum2, ECX;
POPAD;
end; szFinal:= szFinal + Char(Sum2); Sum2:= Sum2 + $82;
end; Edt1.Text:= szFinal;
end;
Edited by Departure
  • Like 1
Departure
Posted (edited)

Sorry for double post I just relized I didn't include 0..9 in the Rot13, here is a small mod to the function for allowing 0..9 chars

// Modified rot13 Function taken from Stackoverflow
function ROT13(Str: string):String;
const
OrdBigA = Ord('A');
OrdBigZ = Ord('Z');
OrdSmlA = Ord('a');
OrdSmlZ = Ord('z');
OrdNum0 = Ord('0');
OrdNum9 = Ord('9');
var
i, o: integer;
begin
for i := 1 to length(Str) do
begin
o := Ord(Str[i]);
if InRange(o, OrdBigA, OrdBigZ) then
Result := Result + xxx(OrdBigA + (o - OrdBigA + 13) mod 26); if InRange(o, OrdSmlA, OrdSmlZ) then
Result := Result + xxx(OrdSmlA + (o - OrdSmlA + 13) mod 26);
//Modified Part
if InRange(o, OrdNum0, OrdNum9) then
Result := Result + xxx(StrToInt(Str[i]) + $46);
end;
end;

due to forum doing weird stuff to code "xxx" = Char

Edited by Departure
  • 2 weeks later...
Posted

Thanks for all for reversing it. I got some trouble, so i can't access to forum for a while, so sorry for late reply

I tried to use some noob anti-fishing tricks, and forgot to change datatype, and got this error one more time. :hands:

Thanks to sama, DE! and Departure :)

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...