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 (http://ultrashare.net/hosting/fl/95d86db57a)
Reglas:
http://foro.elhacker.net/ingenieria_inversa/retos_mensuales_de_reversing-t371874.0.html (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 (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:
Private Sub Form_Load()
Dim Valor As Integer
Dim Nombre As String
Dim Serial As String
Dim RegCode As String
Dim ID As String
Nombre = InputBox("Nombre:", "Arkantos Crackme5 *KeyGen*")
Serial = vbNullString
RegCode = vbNullString
ID = vbNullString
If Len(Nombre) <= 4 Then MsgBox "Nombre demasiado corto", 16, "": End: Exit Sub
Nombre = StrReverse(Nombre)
For x = 1 To Len(Nombre)
Valor = Asc(Mid(Nombre, x, 1))
Serial = Serial & Hex(Valor)
Next x
RegCode = "210579ioO-avB-pM"
ID = "ua921N" & Serial & "pnqVTm"
MsgBox "Nombre: " & StrReverse(Nombre) & vbNewLine & "Serial: " & Serial & vbNewLine & _
"RegCode: " & RegCode & vbNewLine & "ID: " & ID, 64, "Done!"
End
End Sub
-----------------------------------------------------------
6 - YourFirst Crackme
-----------------------------------------------------------
Citarvamos 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í:
00401000 >/$ 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL
00401002 |. 68 00304000 PUSH YourFirs.00403000 ; |Title = "YourFirstCrackme"
00401007 |. 68 43304000 PUSH YourFirs.00403043 ; |Text = "I'm an ugly nag screen. REMOVE ME!"
0040100C |. 6A 00 PUSH 0 ; |hOwner = NULL
0040100E |. E8 0D020000 CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
00401013 |. 6A 00 PUSH 0 ; /pModule = NULL
00401015 |. E8 42020000 CALL <JMP.&kernel32.GetModuleHandleA> ; \GetModuleHandleA
No tenemos que esforzarnos mucho verdad? para eliminar la nag aplicamos NOP's en:
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
00401178 . 68 22304000 PUSH YourFirs.00403022 ; |Text = "Debugger found!"
Subimos lineas mas arriba y analizamos el codigo
00401119 . E8 44010000 CALL <JMP.&kernel32.IsDebuggerPresent> ; [IsDebuggerPresent
0040111E . 83F8 01 CMP EAX,1
00401121 . 74 4E JE SHORT YourFirs.00401171
00401123 . 8B45 0C MOV EAX,DWORD PTR SS:[EBP+C]
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:
00401119 E8 44010000 CALL <JMP.&kernel32.IsDebuggerPresent> ; [IsDebuggerPresent
o aqui:
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
004011A7 > 6A 10 PUSH 10 ; /Style = MB_OK|MB_ICONHAND|MB_APPLMODAL
004011A9 . 68 00304000 PUSH YourFirs.00403000 ; |Title = "YourFirstCrackme"
004011AE . 68 11304000 PUSH YourFirs.00403011 ; |Text = "CD check failed!"
Lineas mas arriba vemos el código y observamos desde donde salta
00401188 E8 C9000000 CALL <JMP.&kernel32.GetDriveTypeA>
0040118D . 83F8 05 CMP EAX,5
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.
00401188 E8 C9000000 CALL <JMP.&kernel32.GetDriveTypeA>
Cambiar por:
00401188 B8 05000000 MOV EAX,5
--------------------------------------------------------------------------------------
2.
0040118D 83F8 05 CMP EAX,5
Cambiar por:
0040118D 3BC0 CMP EAX,EAX
0040118F 90 NOP
--------------------------------------------------------------------------------------
3.
Aplicar NOP's Aqui:
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:
004011A5 . EB 4E JMP SHORT YourFirs.004011F5
salta donde no debe asi que Redireccionamos quedando asi:
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 (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.
Gran trabajo y gracias por tu tiempo. Tal vez me apunte a alguno.
Vamos, que es fin de semana!! echarles un vistazo!!
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.
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.