Jump to content
Tuts 4 You

[KeyGenMe] LordCoder's KeyGenMe


Recommended Posts

Posted (edited)
Hello!

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 ;)

KgMe.rar

Edited by LordCoder
  • Like 1
Posted

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
Posted

Sorry @NOP! I forget to put a replace function. :P Updated.


Posted (edited)

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
Posted

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


LTAwMTk5OVdlbGwgRG9uZSEkTG9yZENvZGVy$LordCoder


 


Thanks for all bugs @NOP and @Mr.eXoDia


Posted (edited)

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
Posted

Yes, this is the code in Visual Basic .NET. Any keygen done @GIV?


Posted

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

Greetings,

Mr. eXoDia

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

LordCoder_keygen.rar

Posted (edited)

And mine.


 


Based on your code.


But as eXoDia says your kgm is still buggy.

LordCoder Keygen.rar

Edited by GIV
Posted

yay, I was first lol.

nice work all :)

Posted

yay, I was first lol.

nice work all :)

I coded in 15 minutes and arranged tha source in 30 so i maybe the first...

:))

Posted

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!

Posted (edited)

@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

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