Hola a todos.
Este es mi primer post y quisiera decir que hace varios días que me intento iniciar en el mundo de la ingeniería inversa. Ya me he leído varios tutos y solucionado varios crackmes (casi todos ellos en delphi y unos pocos en vb), pero ahora tengo un problema y es que no se sacar el serial de uno de ellos que está escrito en c#.
Tengo ya localizado el punto donde hace la comprobación del serial y permite activar el botón de registrar, lo que pasa es que no sé mucho c# y no se sacarlo (veo que estudiar la carrera de informática no me ha servido de mucho jeje).

Aquí pongo el código de la función licenseInfoChanged, que es la que hace la comprobación del serial introducido:


Código:
private void licenseInfoChanged(object sender, EventArgs e)
{
    try
    {
        string input = this.licenseKey.Text.Trim();
        if (!Regex.IsMatch(input, @"[A-Za-z0-9\/\+]{4}-[A-Za-z0-9\/\+]{5}-[A-Za-z0-9\/\+]{4}-[A-Za-z0-9\/\+]{5}-[A-Za-z0-9\/\+]{4}"))
        {
            this.ok.Enabled = false;
        }
        else
        {
            byte[] buffer2;
            FileEncryption.ExtractKey(FileEncryption.RecoverPrivateKey(input.Replace("-", ""), this.fullname.Text, this.email.Text), out this._ExpireDate, out buffer2);
            buffer2 = Encryption.Encrypt(buffer2, FileEncryption.FriendlyBase64(Convert.ToBase64String(buffer2)));
            if (buffer2.Length != Data.Length)
            {
                this.ok.Enabled = false;
            }
            else
            {
                for (int i = 0; i < Data.Length; i++)
                {
                    if (Data[i] != buffer2[i])
                    {
                        this.ok.Enabled = false;
                        return;
                    }
                }
                this.ok.Enabled = true;
            }
        }
    }
    catch
    {
        this.ok.Enabled = false;
    }
}
y aquí el Data al que debe ser igual:

Código:
static RegistrationDialog()
{
    Data = new byte[] { 0xa9, 0x24, 0x2e, 0xa5, 14, 0xcb, 50, 0xbc, 0x40, 0xf9, 0x8d, 0xab, 0x68, 0xa4, 0x3e, 0xfc };
    RegData = new byte[] { 
        13, 0xc4, 0xb1, 6, 0xd6, 0xf9, 0x6f, 0x77, 0x93, 0x63, 0x4b, 0x30, 0x4f, 0x63, 0x2e, 0xc6, 
        0x19, 0x44, 0xad, 0x62, 0x69, 40, 0xac, 0x95, 210, 0xa3, 0x43, 0x4d, 13, 0x6f, 0xb1, 0xc2, 
        0xe8, 0x7b, 150, 0x63, 0xf4, 0xa5, 0xa2, 0xc3, 0x9a, 0x99, 0xce, 0xfd, 0x27, 0x38, 0xed, 0x9d, 
        0x48, 0x5d, 200, 0xa1, 10, 0x74, 0xd4, 0x20, 0xa4, 0x3b, 0x72, 0x2f, 0x4d, 0xcd, 0xba, 0xc4, 
        20, 0x84, 0x5f, 0x31, 11, 0xe2, 0xf5, 210, 0xf1, 200, 0x67, 0x4c, 4, 0xcb, 0x2b, 0x45, 
        0xe7, 0xf1, 0x25, 0x11, 0x8b, 0x97, 0x4d, 0x3e, 0xf8, 0x17, 0xec, 0xf1, 0x4e, 0x13, 0x16, 0x6a
     };
    RenewData = new byte[] { 
        13, 0xc4, 0xb1, 6, 0xd6, 0xf9, 0x6f, 0x77, 0x93, 0x63, 0x4b, 0x30, 0x4f, 0x63, 0x2e, 0xc6, 
        0x19, 0x44, 0xad, 0x62, 0x69, 40, 0xac, 0x95, 210, 0xa3, 0x43, 0x4d, 13, 0x6f, 0xb1, 0xc2, 
        0xe8, 0x7b, 150, 0x63, 0xf4, 0xa5, 0xa2, 0xc3, 0x9a, 0x99, 0xce, 0xfd, 0x27, 0x38, 0xed, 0x9d, 
        0x48, 0x5d, 200, 0xa1, 10, 0x74, 0xd4, 0x20, 0xa4, 0x3b, 0x72, 0x2f, 0x4d, 0xcd, 0xba, 0xc4, 
        0xf6, 0xb7, 0xec, 0x58, 250, 0x12, 0x8f, 30, 0x1d, 0xc4, 190, 0x6f, 0xb7, 0x5b, 0x9d, 0xa1, 
        60, 0x2e, 0xae, 0x26, 0xc7, 0xd1, 0xce, 9, 0x7e, 0x4d, 0x74, 0xa3, 0x81, 0xee, 0xc6, 0x17
     };
}
Espero que me puedan echar alguna ayudilla, ya que estoy más perdido que una aguja en un pajar XD.

Gracias de antemano.