Bueno aqui os traigo una version mas dificil de sacar que la anterior.
[Enlace externo eliminado para invitados]
Pd: cuando la saqueis, poner como lo sacasteis pero sin poner la clave para que asi aprendamos todos...
Un saludo

Mostrar/Ocultar

Fue más fácil que el anterior xDD pss no pondré el pass pero para sacarlo:

Buscamos las strings en el olly
Imagen


Encontramos la cadena que nos dice cuando sacamos correcto el crackme, entonces la seguimos en el dissambler y buscamos la primera comparación que está en 00401FCB en mi caso y colocamos un breakpoint mas arribita de la comparación donde toma los valores yo lo coloqué en 00401FC9
Imagen


Luego corremos el programa con F9 ponemos un password cualquiera como linkgl en mi caso y cuando llegamos al breakpoint trazamos con F8 y vemos que mueve la cadena del pass que pusimos de EDX a EAX y luego a ECX y luego seguimos traceando y en 00401FBD nos tira el password en EDX XDD! y listo:

Pista: la pass es de 4 carácteres

Imagen
//mHmm..
Pues como te había mencionado, puedes encriptar la string y hacer una rutina confusa sumandole restandole y multiplicandole valores a la string y al momento de compararla no concactenar toda la cadena en una variable por que si no ahí tirará el password.! Lo ideal sería que pusieras no solo una contraseña para todas las PC si no que pusieras un campo para escribir un nombre y abajo el campo para el serial, así tomas el nombre y le sumas valores o los restas y con el nombre generas un serial único ;) Esa es la idea pues y no uses msgbox es fácil identificar las llamadas a las APIS con ollydbg! xD son un par de sugerencias de un novato(yo) en esto jeje
//mHmm..

Código: Seleccionar todo

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Sub cmdPulsador_Click()
Dim texto As String
Dim crackme As String
Dim mas As String
mas = 10
crackme = 1024 / 2 * mas
texto = (txtContraseña.Text)
If texto = crackme Then
Call MsgBox("Correcto. Me has crackeado", vbExclamation, Me.Caption)
x = ShellExecute(Me.hwnd, "Open", "www.indetectables.net", &O0, &O0, SW_NORMAL)
Else
Call MsgBox("Intentalo de nuevo", vbCritical, Me.Caption)
End If
End Sub
Este es el source. Dividi y multiplique pero parece que hay que hacerlo mas complejo aun...

Pd: Gracias por la respuesta. Hare lo que dijiste...

Mostrar/Ocultar

ap0calypt0 escribió:Eres muy bueno en eso. Entonces como podria ponerle mas seguridad para que no salga tan facil....
linkgl escribió:Pues como te había mencionado, puedes encriptar la string y hacer una rutina confusa sumandole restandole y multiplicandole valores a la string y al momento de compararla no concactenar toda la cadena en una variable por que si no ahí tirará el password.! Lo ideal sería que pusieras no solo una contraseña para todas las PC si no que pusieras un campo para escribir un nombre y abajo el campo para el serial, así tomas el nombre y le sumas valores o los restas y con el nombre generas un serial único ;) Esa es la idea pues y no uses msgbox es fácil identificar las llamadas a las APIS con ollydbg! xD son un par de sugerencias de un novato(yo) en esto jeje
Y a poder ser, nunca hagas una comparación directa como en este caso ya que con poner un breakpoint en __vbaStrCmp ya puedes ver en la pila (en el ollydbg lo que aparece abajo a la derecha) el serial introducido y el válido.
Ejemplo:

Código: Seleccionar todo

Private Sub Command1_Click()
Dim szNombre As String
Dim szSerial As String
Dim i As Byte
Dim valido As Boolean
  If Text1.Text = "" Or Text2.Text = "" Then
    valido = False
  Else
    szNombre = Text1.Text
    szSerial = Text2.Text
    For i = 1 To Len(szNombre)
      Mid(szNombre, i, 1) = Chr(Asc(Mid(szNombre, i, 1)) + 1)
    Next i
    For i = 1 To Len(szSerial)
      Mid(szSerial, i, 1) = Chr(Asc(Mid(szSerial, i, 1)) - 1)
    Next i
    If szNombre = szSerial Then
      valido = True
    End If
  End If
  If valido Then
    MsgBox "Bien"
  Else
    MsgBox "Mal"
  End If
End Sub
En este caso aunque pongas un breakpoint en __vbaStrCmp no vas a ver el serial bueno.

Saludos.
Imagen
Estoy haciendo un nuevo crackme y tengo una pregunta: si utilizo el codigo de antes, se generan claves aleatorias?

Por ejemplo: este crackme, ¿se podria sacar?
[Enlace externo eliminado para invitados]

Mostrar/Ocultar

Muchas gracias por la respuesta.
Pd: tengo una pregunta para el nombre "ap0calypt0" que serial seria? ya que no se que da si le sumo dos valores a la Y "cr2ecn?rv2"

Mostrar/Ocultar

Bueno. Ya he encontrado la respuesta. Sería "cr2ecn{rv2" para "ap0calypt0".
Para la proxima hare uno tan dificil que espero que te cueste sacarlo hasta a ti ya que eres muy bueno en eso...
Gracias a los dos por responderme...

Mostrar/Ocultar

Hola :D ayer encontre un crackme v2 y vi que tenía tu nick asique le toque un poquito y resolví el crackme.

Imagen


Es de hace meses el post pero bueno, no quiero dejar pasarlo por alto. Gracias por entretenernos y te envío por MP los datos.
Imagen

Mostrar/Ocultar

Responder

Volver a “Cracking/Reversing”