Levis Posted April 7, 2012 Posted April 7, 2012 (edited) Just another keygeme, with easy level Try to make a kaygen for it Language: Delphi Level: 3/10 Packer: N/A used hash/encryption: N/A Screenshot: Download: http://minus.com/mbd9VjThDp/1f Good luck!!! keygenme#3.zip Edited April 7, 2012 by Levis
sama Posted April 7, 2012 Posted April 7, 2012 (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 >> YrivfCJQELSsama >> fnznAFKPBSnDBoard >> FaQObneqICPJDQKER Edited April 10, 2012 by sama
DE! Posted May 3, 2012 Posted May 3, 2012 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 May 4, 2012 Posted May 4, 2012 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 May 4, 2012 Posted May 4, 2012 (edited) Delphi source code to Keygen... A little messy I know, and I really shouldn't have ripped the asm....// rot13 Function taken from Stackoverflowfunction 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 May 4, 2012 by Departure 1
Departure Posted May 4, 2012 Posted May 4, 2012 (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 Stackoverflowfunction 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 May 4, 2012 by Departure
Levis Posted May 18, 2012 Author Posted May 18, 2012 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. Thanks to sama, DE! and Departure
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now