Introducción
Este es un crackme hecho en .Net con dos Nags a parchear y un algoritmo muy sencillo pero que tendremos que parchear para poder resolverlo.
Las Nags
Se encuentran en los eventos de carga y cierre del formulario.
// RegisterMe.Form1 private void Form1_Load(object sender, EventArgs e) { Interaction.MsgBox("Register me pl0x!", MsgBoxStyle.OkOnly, "Nag!!!!"); } // RegisterMe.Form1 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Interaction.MsgBox("Register me pl0x!", MsgBoxStyle.OkOnly, "Nag2!!!!"); }
Para parchear un ejecutable realizado en .Net primero necesitamos ubicarnos. Abrimos IL Dasm y vamos al evento «Form_Load«, nos fijamos en los bytes y los buscamos con un editor hexadecimal. Fijaros bien en los bytes ya que siguen un orden específico, en la imágen del editor hexadecimal se aprecia perfectamente. Para que quede parcheada la Nag basta con sustituir los valores por ceros. Se parchea todo excepto el «RET (2A)».
Para la otra Nag sería lo mismo.
El algoritmo
El algoritmo es muy sencillo, consiste en la concatenación de varias palabras y un número aleatorio. El problema viene con el número aleatorio ya que lo tendremos que parchear para poder registrar el programa.
// RegisterMe.Form1 private void Button1_Click(object sender, EventArgs e) { this.shadow = this.rand.Next(1, 99999999); if (Operators.ConditionalCompareObjectEqual(this.TextBox2.Text, Operators.ConcatenateObject(this.TextBox1.Text + this.TextBox3.Text + this.TextBox4.Text + this.TextBox5.Text + this.TextBox6.Text + this.TextBox7.Text + this.TextBox8.Text + this.TextBox9.Text + this.TextBox1.Text, this.shadow), false)) { this.Button2.Enabled = true; this.Button1.Enabled = false; this.Button1.Text = "Registered to Shadow"; this.Text = "Registered to Shadow!"; } else { Interaction.MsgBox("Incorrect serial, noob.", MsgBoxStyle.OkOnly, null); } }
La concatenación quedaría así:
TextBox1.Text = Nuestro usuario + TextBox3.Text = «ur» + TextBox4.Text = «a» + TextBox5.Text = «stupid» + TextBox6.Text = «dumb» + TextBox7.Text = «idiotic» + TextBox8.Text = «crazy» + TextBox9.Text = «noob» + TextBox1.Text = Nuestro usuario + El número aleatorio
Ejemplo
- Nombre: deurus
- Clave: deurusurastupiddumbidioticcrazynoobdeurus98265385
Parcheando el número aleatorio
Buscamos el evento click en IL Dasm y nos fijamos que aparece el número «5F5E0FF» que en decimal equivale a «99999999«, buscamos los bytes en el editor hexadecimal y lo parcheamos a 1. De este modo anulamos la aletoriedad, ahora el número siempre es 1.
Ahora ya podemos registrarnos.