Jump to content
Tuts 4 You

[crackme] # New Crackme .NET #


Recommended Posts

Posted (edited)

Hi Everyone..


 


Here a new crackme + Simple coded in .net tongue.png


 


 


nIQveBk.png


 


 


Goal: Get the correct serial for your username 


 


Download: http://www.sendspace.com/file/ku1aq3


 


Rar Pass: crackme


 


That is all smile.png


 


 


WTAP0rr.png


 


Greets


Edited by RDGMax
XenocodeRCE
Posted (edited)

 

Xenocode

6C756A2F697151776E477058393452736A67467248673D3D

 

 

Was quit easy, and it's called a "keygenme", but correct me if I'm wrong :)

 

n.b; are you the real Tejon owner ?

Edited by Xenocode
  • Like 1
Posted (edited)

Was quit easy, and it's called a "keygenme", but correct me if I'm wrong :)

 

n.b; are you the real Tejon owner ?

 

Excellent..Tomorrow..level 2 OK

 

Correct if you get the serial is a semi keygen me.. if you patch it's a.. crackme :)

Edited by RDGMax
Posted

Name: atom0s


Serial: 34473469305034716F35343D


  • Like 1
Posted

Ready for Level 2?


Posted

Keygen + src for Level 1:


 


 
/**
 * atom0s!keygen.exe (c) 2013 [atom0s@live.com]
 * 
 * Keygen for RDGMax CrackMe found here:
 * http://forum.tuts4you.com/topic/32850-new-crackme-net/
 */
 
namespace atom0s_keygen
{
    using System;
    using System.IO;
    using System.Security.Cryptography;
    using System.Text;
    using System.Windows.Forms;
 
    public partial class frmMain : Form
    {
 
        /// <summary>
        /// Default Constructor
        /// </summary>
        public frmMain()
        {
            InitializeComponent();
        }
 
        /// <summary>
        /// Text input change event handler.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txtUsername_TextChanged(object sender, EventArgs e)
        {
            if (this.txtUsername.Text.Length < 6)
            {
                this.txtSerial.Text = "Invalid Username Length! (6+ chars needed!)";
                return;
            }
 
            var serial = this.StringToHex(this.EncryptString(this.txtUsername.Text));
            this.txtSerial.Text = string.IsNullOrEmpty(serial) ? "Invalid username input; cannot create serial!" : serial;
        }
 
        /// <summary>
        /// Converts the input string to a hex string.
        /// </summary>
        /// <param name="strInput"></param>
        /// <returns></returns>
        private string StringToHex(string strInput)
        {
            var str = string.Empty;
            for (var x = 1; x <= strInput.Length; x += 1)
            {
                var exp = String.Format("{0:X}", (int)strInput[x - 1]);
                if (exp.Length == 1) exp = "0" + exp;
                str += exp;
            }
            return str;
        }
 
        /// <summary>
        /// Encrypts the input string with DES encryption.
        /// </summary>
        /// <param name="strInput"></param>
        /// <returns></returns>
        private string EncryptString(string strInput)
        {
            if (string.IsNullOrEmpty(strInput))
                return string.Empty;
 
            var key = new byte[] { 0xD4, 0xED, 0x34, 0x93, 0x1C, 0x48, 0xAC, 0x08 };
            var vec = new byte[] { 0x12, 0x44, 0x16, 0xEE, 0x88, 0x15, 0xDD, 0x41 };
            
            var desProvider = new DESCryptoServiceProvider();
            var stream = new MemoryStream();
            var str = string.Empty;
 
            try
            {
                // Convert the input to bytes..
                var data = Encoding.UTF8.GetBytes(strInput);
 
                // Encrypt the data with DES..
                var encStream = new CryptoStream(stream, desProvider.CreateEncryptor(key, vec), CryptoStreamMode.Write);
                encStream.Write(data, 0, data.Length);
                encStream.Flush();
                encStream.Close();
 
                // Encode the return in base64 format..
                str = Convert.ToBase64String(stream.ToArray());
            }
            catch
            {
            }
            finally
            {
                stream.Close();
            }
 
            return str;
        }
    }
}

atom0s!keygen.zip

  • Like 1
Posted

 

Keygen + src for Level 1:

 

/**

 * atom0s!keygen.exe (c) 2013 [atom0s@live.com]

 * 

 * Keygen for RDGMax CrackMe found here:

 * http://forum.tuts4you.com/topic/32850-new-crackme-net/

 */

 

namespace atom0s_keygen

{

    using System;

    using System.IO;

    using System.Security.Cryptography;

    using System.Text;

    using System.Windows.Forms;

 

    public partial class frmMain : Form

    {

 

        /// <summary>

        /// Default Constructor

        /// </summary>

        public frmMain()

        {

            InitializeComponent();

        }

 

        /// <summary>

        /// Text input change event handler.

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void txtUsername_TextChanged(object sender, EventArgs e)

        {

            if (this.txtUsername.Text.Length < 6)

            {

                this.txtSerial.Text = "Invalid Username Length! (6+ chars needed!)";

                return;

            }

 

            var serial = this.StringToHex(this.EncryptString(this.txtUsername.Text));

            this.txtSerial.Text = string.IsNullOrEmpty(serial) ? "Invalid username input; cannot create serial!" : serial;

        }

 

        /// <summary>

        /// Converts the input string to a hex string.

        /// </summary>

        /// <param name="strInput"></param>

        /// <returns></returns>

        private string StringToHex(string strInput)

        {

            var str = string.Empty;

            for (var x = 1; x <= strInput.Length; x += 1)

            {

                var exp = String.Format("{0:X}", (int)strInput[x - 1]);

                if (exp.Length == 1) exp = "0" + exp;

                str += exp;

            }

            return str;

        }

 

        /// <summary>

        /// Encrypts the input string with DES encryption.

        /// </summary>

        /// <param name="strInput"></param>

        /// <returns></returns>

        private string EncryptString(string strInput)

        {

            if (string.IsNullOrEmpty(strInput))

                return string.Empty;

 

            var key = new byte[] { 0xD4, 0xED, 0x34, 0x93, 0x1C, 0x48, 0xAC, 0x08 };

            var vec = new byte[] { 0x12, 0x44, 0x16, 0xEE, 0x88, 0x15, 0xDD, 0x41 };

            

            var desProvider = new DESCryptoServiceProvider();

            var stream = new MemoryStream();

            var str = string.Empty;

 

            try

            {

                // Convert the input to bytes..

                var data = Encoding.UTF8.GetBytes(strInput);

 

                // Encrypt the data with DES..

                var encStream = new CryptoStream(stream, desProvider.CreateEncryptor(key, vec), CryptoStreamMode.Write);

                encStream.Write(data, 0, data.Length);

                encStream.Flush();

                encStream.Close();

 

                // Encode the return in base64 format..

                str = Convert.ToBase64String(stream.ToArray());

            }

            catch

            {

            }

            finally

            {

                stream.Close();

            }

 

            return str;

        }

    }

}

 

 

 

Excellent bro.. Solve this level (Level 2) for get the Level 3..

You Are a Machine
Posted

 

Excellent bro.. Solve this level (Level 2) for get the Level 3..

You Are a Machine

 

 

Level 2:

 

Name: atom0s

Serial: 506C3262614972635645513D

  • Like 1
Posted

Level 2:

 

Name: atom0s

Serial: 506C3262614972635645513D

 

The level 3. Will not use the same encryption method. because you only have to know the key

Posted

Yeah level 2 the key only changed; same code as my previous keygen, just change the key to:


            var key = new byte[] { 0x18, 0x45, 0x53, 0x76, 0x57, 0xB7, 0x92, 0x6A };
Teddy Rogers
Posted

The [crackme] tag has been added to your topic title.

Please remember to follow and adhere to the topic title format - thankyou!

[This is an automated reply]

Posted (edited)

Level 2:


 


Name: master131


Serial: 776D4A552F4B3343432B7467506A7479794A79474A673D3D


 


Note to RDGMax, your anti-debug method using NtQueryInformationProcess with the ProcessDebugObjectHandle and ProcessDebugPort flags isn't 64-bit/AnyCPU compatible because you've declared the P/Invoke signature incorrectly.


 


I didn't hardcode the byte array key to show that I actually did the reversing myself.



using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms; namespace RDG_CrackMe_Level_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }         private byte[] GetKeyFromString(string value)
        {
            var bytes = new byte[8];
            var key = new byte[8];
            var encoding = new ASCIIEncoding();
            int charIndex = 0;
            encoding.GetBytes(value, charIndex, value.Length, bytes, charIndex);             byte[] buffer2 = new SHA1CryptoServiceProvider().ComputeHash(bytes);
            charIndex = 0;
            do
            {
                key[charIndex] = buffer2[charIndex];
                charIndex++;
            } while (charIndex <= 7);             return key;
        }         public string Generate(string name)
        {
            return Sth(Se(name));
        }         public string Sth(string StrToHex)
        {
            string str2 = string.Empty;
            for (int i = 1; i <= StrToHex.Length; i++)
            {
                string expression = ((int) StrToHex[i - 1]).ToString("X");
                if (expression.Length == 1) expression = "0" + expression;
                str2 += expression;
            }
            return str2;
        }         public string Se(string strSource)
        {
            string str = string.Empty;
            var objDES = new DESCryptoServiceProvider();
            var Vector = new byte[] { 0x12, 0x44, 0x16, 0xEE, 0x88, 0x15, 0xDD, 0x41 };
            byte[] TheKey = GetKeyFromString("6889948"); // (0x18, 0x45, 0x53, 0x76, 0x57, 0xB7, 0x92, 0x6A)
            
            try
            {
                byte[] bytes = Encoding.UTF8.GetBytes(strSource);                 using (var stream = new MemoryStream())
                using (var stream2 = new CryptoStream(stream, objDES.CreateEncryptor(TheKey, Vector), CryptoStreamMode.Write))
                {
                    stream2.Write(bytes, 0, bytes.Length);
                    stream2.FlushFinalBlock();
                    str = Convert.ToBase64String(stream.ToArray());
                }
            }
            catch
            {
            }             return str;
        }         private void generateButton_Click(object sender, EventArgs e)
        {
            if (nameTextBox.Text.Length >= 6)
                serialTextBox.Text = Generate(nameTextBox.Text);
        }
    }
}

Edited by master131
  • Like 1
Posted (edited)

Hi Again :)


 


Level 3 / 10


 


Include a Simple Dll


 


s3qNHEe.jpg


 


Beware atom0s is near


 


Download: http://www.sendspace.com/file/ic2emt


 


Password: crackme


 


Thanks


Edited by RDGMax
Posted

 

Level 2:

 

Name: master131

Serial: 776D4A552F4B3343432B7467506A7479794A79474A673D3D

 

Note to RDGMax, your anti-debug method using NtQueryInformationProcess with the ProcessDebugObjectHandle and ProcessDebugPort flags isn't 64-bit/AnyCPU compatible because you've declared the P/Invoke signature incorrectly.

 

I didn't hardcode the byte array key to show that I actually did the reversing myself.

using System;

using System.IO;

using System.Security.Cryptography;

using System.Text;

using System.Windows.Forms;

namespace RDG_CrackMe_Level_2

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        private byte[] GetKeyFromString(string value)

        {

            var bytes = new byte[8];

            var key = new byte[8];

            var encoding = new ASCIIEncoding();

            int charIndex = 0;

            encoding.GetBytes(value, charIndex, value.Length, bytes, charIndex);

            byte[] buffer2 = new SHA1CryptoServiceProvider().ComputeHash(bytes);

            charIndex = 0;

            do

            {

                key[charIndex] = buffer2[charIndex];

                charIndex++;

            } while (charIndex <= 7);

            return key;

        }

        public string Generate(string name)

        {

            return Sth(Se(name));

        }

        public string Sth(string StrToHex)

        {

            string str2 = string.Empty;

            for (int i = 1; i <= StrToHex.Length; i++)

            {

                string expression = ((int) StrToHex[i - 1]).ToString("X");

                if (expression.Length == 1) expression = "0" + expression;

                str2 += expression;

            }

            return str2;

        }

        public string Se(string strSource)

        {

            string str = string.Empty;

            var objDES = new DESCryptoServiceProvider();

            var Vector = new byte[] { 0x12, 0x44, 0x16, 0xEE, 0x88, 0x15, 0xDD, 0x41 };

            byte[] TheKey = GetKeyFromString("6889948"); // (0x18, 0x45, 0x53, 0x76, 0x57, 0xB7, 0x92, 0x6A)

            

            try

            {

                byte[] bytes = Encoding.UTF8.GetBytes(strSource);

                using (var stream = new MemoryStream())

                using (var stream2 = new CryptoStream(stream, objDES.CreateEncryptor(TheKey, Vector), CryptoStreamMode.Write))

                {

                    stream2.Write(bytes, 0, bytes.Length);

                    stream2.FlushFinalBlock();

                    str = Convert.ToBase64String(stream.ToArray());

                }

            }

            catch

            {

            }

            return str;

        }

        private void generateButton_Click(object sender, EventArgs e)

        {

            if (nameTextBox.Text.Length >= 6)

                serialTextBox.Text = Generate(nameTextBox.Text);

        }

    }

}

 

Has been compiled for x32 Bro

Posted

What obfuscator did you use to make repetitive functions and assigns? Or you coded all yourself?


Posted

What obfuscator did you use to make repetitive functions and assigns? Or you coded all yourself?

I used a stupid app for make garbage.. Crackme not hard bro.

Is Valid if you patch the crackme..if you get the serial number better :)

Posted

No I only asked what type of obfuscator you used because I love it. I will try to add for my future packer a copy of thousands of similar methods and stupid references :D


Posted

No I only asked what type of obfuscator you used because I love it. I will try to add for my future packer a copy of thousands of similar methods and stupid references :D

 

I not use external obfuscator bro.. only code

Posted

Has been compiled for x32 Bro

 

Yes I know, but I'm just saying that if you compile it for x64 or AnyCPU it won't work. :P

Posted (edited)

It works fine for me, I already cracked it via pm before he posted it live.


Edited by atom0s
Posted

It works fine for me, I already cracked it via pm before he posted it live.

 

Not same version bro.

Posted

Here is my try for level 1

 

Excellent.. you have to solve Level 3 now

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