Jump to content
Tuts 4 You

[Keygenme] Keygenme 12


ChOoKi
Go to solution Solved by GrindStone,

Recommended Posts

Here is small kgm for you all to keygen or even serial fish, patching is a :nono: since it's easy and you will learn nothing from doing so.

Some info:

Language : Delphi

Packed : Yes, but very easy to unpack

Rating : Who really cares

Any type of tut (video, paper ... etc) will be a bonus.

Have fun :peace:

kgm12.rar

Link to comment

@GIV: More than just a hash, trust me.

@Kingstaa: Right on the money!

@kakamail :Sorry if you feel that way, maybe next time in a [PatchMe] or [CrackMe]

Edited by ChOoKi
Link to comment
  • 3 weeks later...
  • Solution
You haven't changed a little bit, have you? :)

 

Well... nice and tidy challenge as usual. Take me good two days in total to solve this. One day to replicate that superb verification, and another nice one day to reverse it.

 

Nice stuff on that "CRC". :D Really enjoyed reversing it. And that final verification? That's just classic!!! :D:)

 

The "Hint" from you above, make me sure that my solution will work on any PC. :) And tut for this? Hmm... maybe source code? Or... should i wait for another solution? :)

 

Anyway... Thanks alot for the excellent challenge, brother. :)

Solution for ChOoKi kgm12.rar

Edited by GrindStone
  • Like 2
Link to comment

@ GS: Congratulations for being :1a: an amazing 2-days solution indeed, you made my day man :yahoo:


 


I was expecting/hoping to see more solutions, so maybe your notes here could shed some light on this challenge.


 


Thank you very much for your time & for the kind words, I am honered.


 


:peace:


Link to comment

I'm the one who honored here... :)


 


Well... for notes about this KGM, i dion't want to spoil much fun, so i would only post my code for calculating that "CRC". And i hope, from that code, you guys could get some light to reverse it. :)


 


Here is the code :


 


 




 



procedure TwoValuedCRC32FromInteger(xIn : DWORD;var xRes1,xRes2 : DWORD);
var
  i : Integer;
  x1,x2,x3,x4 : DWORD;
begin
  xRes1 := $FFFFFFFF;
  xRes2 := $FFFFFFFF;
  for i := 3 downto 0 do
  begin
    x1 := i + i;
    x1 := x1 + x1;
    x1 := x1 + x1;
    x2 := xIn shr x1;
    x3 := x2 and $ff;
    x2 := xRes1 shr $18;
    x3 := x3 xor x2;
    x2 := xRes1 shl 8;
    x4 := xRes2 shr $18;
    x2 := x2 xor x4;
    xRes1 := x2 xor arrCrc1[x3];
    x2 := xRes2 shl 8;
    xRes2 := x2 xor arrCrc2[x3];
  end;
  xRes1 := xRes1 xor $FFFFFFFF;
  xRes2 := xRes2 xor $FFFFFFFF;
  asm
    pushad
    mov eax, xRes1
    bswap eax
    mov xRes1, eax
    mov eax, xRes2
    bswap eax
    mov xRes2, eax
    popad
  end;
end;

 


And for that "arrCrc1" and "arrCrc2", you could get that from the KGM itself. :) And some "array tool" could help you big time. ;)


 


And one again to notes, to solve this, i replicate the whole algo of this KGM. That way, i could imagine how to reverse it more easly. And yes, you have to literally reverse it. ;)


 


Have a great day. :)

  • Like 1
Link to comment

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...