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
Fue más fácil que el anterior xDD pss no pondré el pass pero para sacarlo:
Buscamos las strings en el olly
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
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
Buscamos las strings en el olly
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
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
//mHmm..
Eres muy bueno en eso. Entonces como podria ponerle mas seguridad para que no salga tan facil....
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
Pd: Gracias por la respuesta. Hare lo que dijiste...
ap0calypt0 escribió:Eres muy bueno en eso. Entonces como podria ponerle mas seguridad para que no salga tan facil....
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.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
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
Saludos.
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]
Por ejemplo: este crackme, ¿se podria sacar?
[Enlace externo eliminado para invitados]
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"
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"
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...
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...
Hola :D ayer encontre un crackme v2 y vi que tenía tu nick asique le toque un poquito y resolví el crackme.
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.
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.