Jump to content
Tuts 4 You

[KeyGenMe] LordCoder's KeyGenMe


Recommended Posts


I'm going to post a new keygenme for .NET reversers.

Language: Visual Basic .NET

Encryption: Maths and Base64 (and your mind) :P

Rules: Only keygen accepted. Valid serial also accepted. Not patching or crack.

Level of difficult: 2/10 (but you choose)

Packer: me ;)


Edited by LordCoder
  • Like 1
Link to comment

Have you tried a valid serial?

I can't see how a base64 encoded string can have the same end characters as the un-encoded string. Is this a bug or am I missing something?

  • Like 1
Link to comment

hm, i think you're still bugging...


int num = Conversions.ToInteger(s.Substring(3, 3)); //takes 3 chars after 3rd character and convert to sting (seems strange, but ok)string str = Encoding.ASCII.GetString(Convert.FromBase64String(s.Replace("$LordCoder", ""))); //convert to base64 and strip "$LordCoder"//some code, all fineif ((int.Parse(str.Substring(0, 3)) + 1000 != num)    return false;
This is not possible (it's possible to have 3 number characters in a base64 string ("LTk54444JExvcmRDb2Rlcg==") but in this case there is no possibility this test is going to pass:

number can be negative, ok. but the max negative is -99 (due to the 3 char limit) so in this case you would get:

1000 - 99 = 901

then the first num must be 901 (or at least: somewhere in the 9XX range). If we change the base64 string to match this there is a problem: "LTk9" give the string: "-9=" this means, it's not possible to make a valid serial...

Edited by Mr. eXoDia
Link to comment

Yes, it has this bug. I changed the 3 chars to 4 chars. Now a valid serial will be this:



Thanks for all bugs @NOP and @Mr.eXoDia

Link to comment

Public Function Check(ByVal s As String, ByVal bool_0 As Boolean) As Boolean

Dim str As String = Encoding.ASCII.GetString(Convert.FromBase64String(s.Replace("$LordCoder", "")))

Dim num As Integer = Conversions.ToInteger(str.Substring(4, 3))

If Not s.EndsWith("$LordCoder") Then

Return False

End If

If Not str.EndsWith("$LordCoder") Then

Return False

End If

If ((Integer.Parse(str.Substring(0, 4)) + Integer.Parse(Conversions.ToString(&H3E8))) <> num) Then

Return False

End If

If bool_0 Then

Return False

End If

Return Conversions.ToBoolean(Operators.AndObject(Me.method_0("LordCoder", True), Me.method_2(str.Substring(6))))

End Function

4 checks

Edited by GIV
Link to comment

Attached my keygen. Contains keygen, source and base64_tool.exe (the tool I use for base64)


Mr. eXoDia

PS your keygenme is still buggy (I did not actually include the "Well done!" string, just "!")


Link to comment

It was easy with all of this bugs fixed! :P I wanted to make an interesting keygenme. Next time I will make it difficult but first trying to make a keygen before publish :) Well done everyone!

Link to comment

@LordCoder: it was an interesting keygenme, but next time check if you can make valid serials yourself before you post it :D

Edited by Mr. eXoDia
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...