elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Retos Junio 2013 De reversing
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Retos Junio 2013 De reversing  (Leído 5,864 veces)
kaltorak

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Retos Junio 2013 De reversing
« en: 30 Mayo 2013, 18:47 pm »

Hola a todos.

Este mes me encargo yo de subir los retos y gestionar la lista de los participantes, así Flamer se puede relajar un poco.
Espero que participéis muchos este mes, recordar que tenéis que enviarme a mí los retos resueltos para que los poste a final de mes.

1 - cc14 --> 1- Simple CrackMe #1-Bloc.

2 - crackme#1.LightHash.

3 - Crackme5.

4 - InjectMe_#2.

5 - LeeviON__sCrackme.

6 - YourFirst.

Retos:
ultrashare.net/hosting/fl/95d86db57a

Reglas:
http://foro.elhacker.net/ingenieria_inversa/retos_mensuales_de_reversing-t371874.0.html


Debido a que el Crackme cc14 no puede ser resulto lo hemos cambiado por el Simple CrackMe #1-Bloc
Siento las molestias que os haya podido ocasionar el problema con el cc14
Aquí tenéis el enlace de descarga del nuevo Crackme.


Simple CrackMe #1-Bloc: http://ultrashare.net/hosting/fl/69df35b9f4


Lista de Ganadores
-----------------------------------------------------------------
|  Usuario        |      Reto    |                Logro               |
-----------------------------------------------------------------
|   FaQuiVer     |       2       |                 serial               |
----------------------------------------------------------------
|   FaQuiVer     |       3       |         Tutorial y Keygen     |
----------------------------------------------------------------
|   FaQuiVer     |       6       |                Tutorial            |
----------------------------------------------------------------
| PeterPunk77  |       1       |               Serial               |
----------------------------------------------------------------
| PeterPunk77  |       2       |               Resuelto           |
----------------------------------------------------------------
| PeterPunk77  |       3       |               Resuelto           |
----------------------------------------------------------------
| PeterPunk77  |       4       |               Resuelto           |
----------------------------------------------------------------
| PeterPunk77  |       5       |               Resuelto           |
----------------------------------------------------------------
| PeterPunk77  |       6       |               Resuelto           |
----------------------------------------------------------------
| CraZy7BiTS   |       1       |               Serial               |
----------------------------------------------------------------
| CraZy7BiTS   |       6       |               Resuelto           |
----------------------------------------------------------------


Soluciones FaQuiVer

-----------------------------------------------------------
2 - crackme#1.LightHash
-----------------------------------------------------------
Name:  FaQuiVer
Serial:  227378-30-3871
-----------------------------------------------------------

-----------------------------------------------------------
3 - Crackme5.
-----------------------------------------------------------

KeyGen:

    
Código
  1.    Private Sub Form_Load()
  2.    Dim Valor As Integer
  3.    Dim Nombre As String
  4.    Dim Serial As String
  5.    Dim RegCode As String
  6.    Dim ID As String
  7.    Nombre = InputBox("Nombre:", "Arkantos Crackme5 *KeyGen*")
  8.    Serial = vbNullString
  9.    RegCode = vbNullString
  10.    ID = vbNullString
  11.    If Len(Nombre) <= 4 Then MsgBox "Nombre demasiado corto", 16, "": End: Exit Sub
  12.    Nombre = StrReverse(Nombre)
  13.    For x = 1 To Len(Nombre)
  14.    Valor = Asc(Mid(Nombre, x, 1))
  15.    Serial = Serial & Hex(Valor)
  16.    Next x
  17.    RegCode = "210579ioO-avB-pM"
  18.    ID = "ua921N" & Serial & "pnqVTm"
  19.    MsgBox "Nombre: " & StrReverse(Nombre) & vbNewLine & "Serial: " & Serial & vbNewLine & _
  20.          "RegCode: " & RegCode & vbNewLine & "ID: " & ID, 64, "Done!"
  21.    End
  22.    End Sub
   


-----------------------------------------------------------
6 - YourFirst Crackme
-----------------------------------------------------------

Citar
vamos por partes, lo que necesitamos es ollydbg 1.10 sin cambios ni plugin

los objetivos son:

- nag
- AntiDebug
- PassCdCheck

Primero la nag!

al abrir el crackme en ollydbg caemos directamente aquí:

Código
  1.    00401000 >/$ 6A 00          PUSH 0                                   ; /Style = MB_OK|MB_APPLMODAL
  2.    00401002  |. 68 00304000    PUSH YourFirs.00403000                   ; |Title = "YourFirstCrackme"
  3.    00401007  |. 68 43304000    PUSH YourFirs.00403043                   ; |Text = "I'm an ugly nag screen. REMOVE ME!"
  4.    0040100C  |. 6A 00          PUSH 0                                   ; |hOwner = NULL
  5.    0040100E  |. E8 0D020000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA
  6.    00401013  |. 6A 00          PUSH 0                                   ; /pModule = NULL
  7.    00401015  |. E8 42020000    CALL <JMP.&kernel32.GetModuleHandleA>    ; \GetModuleHandleA


No tenemos que esforzarnos mucho verdad?  para eliminar la nag aplicamos NOP's en:


Código
  1.    0040100E  |. E8 0D020000    CALL <JMP.&user32.MessageBoxA>           ; \MessageBoxA


Con esto nos libramos de la nag, guardamos cambios y seguimos con el Antidebug

Al correr el crackme nos salta un mensaje con este texto:

---------------------------
YourFirstCrackme
---------------------------
Debugger found!
---------------------------
Aceptar  
---------------------------

que hacemos? pues... buscamos todas las referencias de texto, ubicamos "Debugger found!"

ENTER en la cadena para caer en el desensamblado

Caemos directamente aqui



Código
  1.    00401178   . 68 22304000    PUSH YourFirs.00403022                   ; |Text = "Debugger found!"


Subimos lineas mas arriba y analizamos el codigo


Código
  1.    00401119   . E8 44010000    CALL <JMP.&kernel32.IsDebuggerPresent>   ; [IsDebuggerPresent
  2.    0040111E   . 83F8 01        CMP EAX,1
  3.    00401121   . 74 4E          JE SHORT YourFirs.00401171
  4.    00401123   . 8B45 0C        MOV EAX,DWORD PTR SS:[EBP+C]
  5.    00401126   . 3D 10010000    CMP EAX,110
   



Observamos IsDebuggerPresent que es una funcion de windows para detectar debugeo

ese call nos devuelve 0 si no hay y 1 si hay un debugger presente

0040111E   . 83F8 01        CMP EAX,1 <--- aqui la condición

EAX almacena el resultado ( 0 o 1 ) y compara, si se cumple salta directamente al msgbox de "Debugger found!"

00401121   . 74 4E          JE SHORT YourFirs.00401171

Solucion!

NOP's Aqui:


Código
  1.    00401119     E8 44010000    CALL <JMP.&kernel32.IsDebuggerPresent>   ; [IsDebuggerPresent

o aqui:


Código
  1.    00401121   . 74 4E          JE SHORT YourFirs.00401171


Cualquiera de las dos opciones es valida, guardamos cambios y listo!

------------------------------------------------------------------------------------

Ahora PassCdCheck

Igual para este vemos que nos muestra un mensaje con este texto:

---------------------------
YourFirstCrackme
---------------------------
CD check failed!
---------------------------
Aceptar  
---------------------------

Buscamos referencias, ubicamos CD check failed! ENTER para caer en el desensamblado


Código
  1.    004011A7   > 6A 10          PUSH 10                                  ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
  2.    004011A9   . 68 00304000    PUSH YourFirs.00403000                   ; |Title = "YourFirstCrackme"
  3.    004011AE   . 68 11304000    PUSH YourFirs.00403011                   ; |Text = "CD check failed!"

Lineas mas arriba vemos el código y observamos desde donde salta


Código
  1.    00401188     E8 C9000000    CALL <JMP.&kernel32.GetDriveTypeA>
  2.    0040118D   . 83F8 05        CMP EAX,5
  3.    00401190   . 75 15          JNZ SHORT YourFirs.004011A7


Al tracear observo que esta función "GetDriveTypeA" me devuelve un valor de 3 el cual se almacena en EAX y se compara con 5. Obviamente no se cumple asi que salta al mensaje de error

3 Soluciones! aplicar cualquiera da el mismo resultado.

1.
Código
  1.    00401188     E8 C9000000    CALL <JMP.&kernel32.GetDriveTypeA>

Cambiar por:

Código
  1.    00401188     B8 05000000    MOV EAX,5

--------------------------------------------------------------------------------------

2.

Código
  1. 0040118D     83F8 05        CMP EAX,5

Cambiar por:


Código
  1.    0040118D     3BC0           CMP EAX,EAX
  2.    0040118F     90             NOP

--------------------------------------------------------------------------------------

3.
Aplicar NOP's Aqui:

Código
  1. 00401190   . 75 15          JNZ SHORT YourFirs.004011A7


--------------------------------------------------------------------------------------


Guardamos cambios utilizando cualquiera de las 3 soluciones y ya se nos muestra el mensaje bueno! aun que observo un detalle, luego de aceptar el mensaje bueno el Crackme rompe o crashea!


vuelvo al olly y luego del mensaje bueno observo esto:


Código
  1.   004011A5   . EB 4E          JMP SHORT YourFirs.004011F5


salta donde no debe asi que Redireccionamos quedando asi:


Código
  1.    004011A5     EB 48          JMP SHORT YourFirs.004011EF


y listo eso seria todo!


Soluciones PeterPunk77

-----------------------------------------------------------
1 - Simple CrackMe #1-Bloc.
-----------------------------------------------------------
User:  |Usuario|
Pass:  |J5L2C-K4B8L-D2K9S|

-----------------------------------------------------------

-----------------------------------------------------------
2 - crackme#1.LightHash.

3 - Crackme5.

4 - InjectMe_#2.

5 - LeeviON__sCrackme.

6 - YourFirst.
-----------------------------------------------------------

Soluciones: http://ultrashare.net/hosting/fl/a6bdccb84c
pass: "elhackerforum" (sin comillas).

-----------------------------------------------------------

Soluciones CraZy7BiTS

-----------------------------------------------------------
1 - Simple CrackMe #1-Bloc.
-----------------------------------------------------------

User:  |Usuario|
Pass:  |J5L2C-K4B8L-D2K9S|

-----------------------------------------------------------



Un Saludo
Kaltorak.
« Última modificación: 1 Julio 2013, 18:57 pm por kaltorak » En línea



karmany
Moderador
***
Desconectado Desconectado

Mensajes: 1.615


Sueñas que sueñas


Ver Perfil WWW
Re: Retos Junio 2013 De reversing
« Respuesta #1 en: 31 Mayo 2013, 20:37 pm »

Gran trabajo y gracias por tu tiempo. Tal vez me apunte a alguno.

Vamos, que es fin de semana!! echarles un vistazo!!
En línea

kaltorak

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Re: Retos Junio 2013 De reversing
« Respuesta #2 en: 4 Junio 2013, 06:11 am »

Muchas Gracias karmany, si tienes un hueco adelante aquí te esperamos.

Sé que es difícil sacar un ratito pero animo chicos que no son muy difíciles, veréis que se resuelven en nada de tiempo.




« Última modificación: 4 Junio 2013, 06:14 am por kaltorak » En línea



EscritoEstáSatanás

Desconectado Desconectado

Mensajes: 33


Ver Perfil
Re: Retos Junio 2013 De reversing
« Respuesta #3 en: 6 Junio 2013, 08:05 am »

YourFirst -> Listo.

INT3

Una pista : cuando vayan a nopear o cambiar el salto para pasar el cd-check.

Va a ver un problema con un comando arriba mencionado.

Tienen que buscar los Jumps Que van a dar hacia "INT3"

y cambiarlos donde hay un "XOR EAX,EAX".

Bueno pueden resolverlo de otra manera, pero es la que me funciono a la perfección a mí.

El nag esta facil, eso se los dejo a ustedes.

Gracias por la colección.
 ;-)

Se que este es el mas facil de todos, pero como soy novato tambien quiero ayudar.
« Última modificación: 6 Junio 2013, 08:09 am por hPl0w » En línea

kaltorak

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Re: Retos Junio 2013 De reversing
« Respuesta #4 en: 17 Junio 2013, 08:55 am »

Hola a todos

Debido a que el Crackme cc14 no puede ser resulto lo hemos cambiado por el Simple CrackMe #1-Bloc.
Siento las molestias que os haya podido ocasionar el problema con el cc14
Aquí tenéis el enlace de descarga del nuevo Crackme.

Simple CrackMe #1-Bloc: http://ultrashare.net/hosting/fl/69df35b9f4

Y de paso actualizo la lista con los participantes que han enviado los retos resueltos.

Un saludo
kaltorak..

En línea



Flamer


Desconectado Desconectado

Mensajes: 1.052


crack, crack y mas crack...


Ver Perfil WWW
Re: Retos Junio 2013 De reversing
« Respuesta #5 en: 17 Junio 2013, 16:08 pm »

balla peterpunk esta partisipando me sorprende

saludos flamer
En línea

Mi Canal De Youtube y Blog

https://elblogdeflamer.blogspot.com

kaltorak

Desconectado Desconectado

Mensajes: 71



Ver Perfil
Re: Retos Junio 2013 De reversing
« Respuesta #6 en: 1 Julio 2013, 18:54 pm »

Hola a todos

Como ya ha terminado el mes actualizo la lista y coloco las respuestas enviadas.

Un saludo
Kaltorak.
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Retos Mensuales De Reversing
Ingeniería Inversa
Flamer 0 3,189 Último mensaje 24 Septiembre 2012, 03:58 am
por Flamer
Reto Enero 2013 De reversing
Ingeniería Inversa
Flamer 2 2,969 Último mensaje 30 Enero 2013, 03:48 am
por Flamer
Reto Mayo 2013 De reversing « 1 2 »
Ingeniería Inversa
Flamer 15 8,950 Último mensaje 30 Mayo 2013, 16:48 pm
por Flamer
Procesadores actuales a junio 2013
Hardware
imoen 8 4,494 Último mensaje 25 Junio 2013, 04:13 am
por Randomize
Retos Julio 2013 De reversing « 1 2 3 »
Ingeniería Inversa
kaltorak 24 13,266 Último mensaje 19 Agosto 2013, 05:03 am
por kaltorak
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines