-
Ayuda para serial
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.
-
¿Con qué programa estas tratando de ver la rutina del serial?
Dá un poco más de pistas a ver lo qeu se puede hacer.
Si usas el OllyDBG ¿Has puesto Breakpoints? ¿No puedes ver los datos de los Registros AX,BX,CX, DX?.
Saludetes
-
Buenas chato_sat,
Una pregunta, tienes opción de modificar el código??
En el caso afirmativo, es tan facil como invertir la condición a la hora de evaluar el password introducido ó entrar en el primer if y cambiarle this.ok.Enabled a True.
Un saludo.
-
pareciera que ves un código de un .net en reflector, pero por lo poco que entiendo está usando una cadena en base 64, te recomendaría que leas tutoriales y busques tools que convierten las cadenas a este sistema de encriptación