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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Crackme V3 Colmena de CheckBox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crackme V3 Colmena de CheckBox  (Leído 3,574 veces)
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
Crackme V3 Colmena de CheckBox
« en: 17 Enero 2013, 19:35 pm »



Bueno, ya ha quedado bastante claro que los Hardcoded en VB6 son pan comido, así que he programado ésta protección a ver si alguno le toca las cosquillas.

- El crackme está protegido con un compresor
- El crackme usa rutinas anti-debugg, pero creo que los plugins del OllyDbg se los saltan, así que no tendréis problemas en éste punto.
- Se genera un ID único de 4 cifras (hardware fingerprint)
- La combinación correcta de checkbox va relacionada con el ID



Prohibido parchear, ya se que podemos forzar el ID a un número tipo 1111 para solventar, así que no lo aceptaré como una solución válida.
Prohibido parchear, también, el salto condicional que comprueba la colmena.

En definitiva, tienes que destripar el algoritmo que he inventado para saber que checkbox's hay que pulsar, la relación la tenéis en el ID único.

El algoritmo es muy sencillo

DOWNLOAD: http://www.mediafire.com/?1pbhn4b4wj4a8d2
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.513


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Crackme V3 Colmena de CheckBox
« Respuesta #1 en: 17 Enero 2013, 23:39 pm »

En una VM que tengo por acá:



Si hago tiempo, esta noche veo de hacer un keygen...

EDIT:

EXE desempacado + Keygen en VB6 + Código fuente keygen: http://www.multiupload.nl/EKLOF1CPS3

He probado el KG sólo en 2 máquinas, asi que PODRIA fallar...  :P

Saludos!
« Última modificación: 18 Enero 2013, 05:17 am por MCKSys Argentina » En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

apuromafo CLS


Desconectado Desconectado

Mensajes: 1.441



Ver Perfil WWW
Re: Crackme V3 Colmena de CheckBox
« Respuesta #2 en: 18 Enero 2013, 06:04 am »

acabo de ver el reto ,tambien logre desempacar ,pero no soluciono como @MCKSys Argentina, al testear el keygen de el, funciona perfecto en este equipo

ID:6567
os:  Xp sp2

saludos Apuromafo
En línea

Apuromafo
Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
Re: Crackme V3 Colmena de CheckBox
« Respuesta #3 en: 18 Enero 2013, 08:16 am »

Madre mia, lo has vuelto a hacer todo correcto xDDD

El algoritmo es muy sencillo. El ID único se genera a partir del código ascii perteneciente al nombre de usuario y nombre de equipo, por ejemplo: 9987

El algoritmo que sigue la colmena es muy sencillo: hay que contar los checkbox y cada vez que llegemos a 9 marcar uno y volver a contar desde ahí. Si el ID fuera 1111 se marcarían todos los checkbox, si fuera 2222 se marcarían de 2 en 2. En el caso de MCKS 6565 se marcan los checkbox de las posiciones 6 y 5. Así de simple.

La solución es correcta y el keygen está perfecto :P



Ahora quiero aprovechar y hacerte unas preguntas:

Tuviste algún problema para ejecutar el crackme y debuggear? Instalé algunas protecciones básicas y quería saber si te topaste con ellas o si directamente ni las vistes.

La primera protección es mandar cerrar los procesos típicos del olly
La segunda fue ocultar la API MessageBoxA, en lugar de cargarla de forma normal, usé GetProcAddress
La tercera protección es algo más compleja: Se genera un thread adicional e inyecto un código ASM en dicho thread para ejecutarlo, dejo el source:

Código
  1. Function fInstallThread() As Long
  2.    On Error GoTo NotInstalled
  3.  
  4.    Dim ThreadID As Long
  5.    Dim ThreadEntryPoint As Long
  6.    Dim ThreadCode As String
  7.    Dim ThreadCodeByte() As Byte
  8.    Dim ModuleHandle As Long
  9.    Dim ProcIDPAddr As Long
  10.    Dim ProcGCPAddr As Long
  11.    Dim ProcTPAddr As Long
  12.    Dim ProcSPAddr As Long
  13.  
  14.    '00401FBC      BF B1F5577C   MOV EDI,KERNEL32.IsDebuggerPresent
  15.    '00401FC1      FFD7          CALL EDI
  16.    '00401FC3      83F8 01       CMP EAX,1
  17.    '00401FC6      75 0F         JNZ SHORT 00401FD7
  18.    '00401FC8      BF 2579597C   MOV EDI,KERNEL32.GetCurrentProcess
  19.    '00401FCD      FFD7          CALL EDI
  20.    '00401FCF      50            PUSH EAX
  21.    '00401FD0      BF 6D6A597C   MOV EDI,KERNEL32.TerminateProcess
  22.    '00401FD5      FFD7          CALL EDI
  23.    '00401FD7      BF 91A2597C   MOV EDI,KERNEL32.Sleep
  24.    '00401FDC      B8 10270000   MOV EAX,2710            ;Sleep 10 seconds before check the debugger again
  25.    '00401FE1      50            PUSH EAX
  26.    '00401FE2      FFD7          CALL EDI
  27.    '00401FE4    ^ EB D6         JMP SHORT 00401FBC
  28.  
  29.    ModuleHandle = LoadLibrary("Kernel32.dll")
  30.  
  31.    ProcIDPAddr = GetProcAddress(ModuleHandle, "IsDebuggerPresent")
  32.    ProcGCPAddr = GetProcAddress(ModuleHandle, "GetCurrentProcess")
  33.    ProcTPAddr = GetProcAddress(ModuleHandle, "TerminateProcess")
  34.    ProcSPAddr = GetProcAddress(ModuleHandle, "Sleep")
  35.  
  36.    ThreadCode = "BF" & AlignDWORD(ProcIDPAddr) & "FFD783F801750FBF" & AlignDWORD(ProcGCPAddr) & "FFD750BF" & AlignDWORD(ProcTPAddr) & "FFD7BF" & AlignDWORD(ProcSPAddr) & "B81027000050FFD7EBD6"
  37.    ConvHEX2ByteArray ThreadCode, ThreadCodeByte
  38.  
  39.    ThreadEntryPoint = VirtualAlloc(0, UBound(ThreadCodeByte) - LBound(ThreadCodeByte) + 1, MEM_COMMIT, PAGE_EXECUTE_READWRITE)
  40.    CopyMemory ByVal ThreadEntryPoint, ByVal VarPtr(ThreadCodeByte(LBound(ThreadCodeByte))), ByVal UBound(ThreadCodeByte) - LBound(ThreadCodeByte) + 1
  41.    CreateThread ByVal 0&, ByVal 0&, ByVal ThreadEntryPoint, ByVal 0&, ByVal 0&, ThreadID
  42.    fInstallThread = ThreadID
  43.    Exit Function
  44. NotInstalled:
  45.    fInstallThread = 0
  46. End Function
  47.  

Por lo visto los plugins de Olly también lo protegen de los threads que generas a partir de la aplicación principal :( Ya que la llamada a la API IsDebuggerPresent no se genera nunca desde el propio ejecutable. Seguiré investigando :P

PD. El source de thread en ASM no es mio
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: Crackme V3 Colmena de CheckBox
« Respuesta #4 en: 18 Enero 2013, 08:46 am »

@||MadAntrax||: deverdad piensas que son protecciones complejas... simplementas copias unos bytes a un buffer y lo llamas desde un hilo creado, y honestamente lo peor del codigo en ensamblador fue esto:

call IsDebuggerPresent
cmp eax,1
jnz 0x******

Citar
Por lo visto los plugins de Olly también lo protegen de los threads que generas a partir de la aplicación principal  Ya que la llamada a la API IsDebuggerPresent no se genera nunca desde el propio ejecutable. Seguiré investigando

PD. El source de thread en ASM no es mio
Quieres decir no se llama desde el hilo principal, los hilos siempre se crean en el espacio de memoria del proceso/ejecutable.


En línea

Mad Antrax
Colaborador
***
Desconectado Desconectado

Mensajes: 2.166


Cheats y Trainers para todos!


Ver Perfil WWW
Re: Crackme V3 Colmena de CheckBox
« Respuesta #5 en: 18 Enero 2013, 09:22 am »

@||MadAntrax||: deverdad piensas que son protecciones complejas... simplementas copias unos bytes a un buffer y lo llamas desde un hilo creado

En ningún momento he dicho ni he pensado que fueran protecciones complejas xD, sencillamente pensé que al llamar a la API desde un thread podría despistar un poco más al plugin, pero ya veo que no.

Seguiré investigando
En línea

No hago hacks/cheats para juegos Online.
Tampoco ayudo a nadie a realizar hacks/cheats para juegos Online.
tincopasan


Desconectado Desconectado

Mensajes: 1.286

No es lo mismo conocer el camino que recorrerlo.


Ver Perfil
Re: Crackme V3 Colmena de CheckBox
« Respuesta #6 en: 18 Enero 2013, 17:51 pm »

MadAntrax:
                  hice correr al aplicación en un olly totalmente libre de plugins, la referencia a IsDebuggerPresent es invocada varias veces y se salta simplemente parchando el buffer 01 por 00 como ha sido explicado en muchos tutoriales. En cuanto a la otra protección (leer el nombre del proceso), también es fácil evitarla, pusiste nombres de procesos como ollydbg, shadow, snd y otros que ni me acuerdo, pero muchos le ponen nombres personalizados al olly. El primero que recuerdo fue pepedbg.
O sea las protecciones son más que mínimas en este caso. Igual no creas que es desmerecer tu trabajo! creo te puede servir para seguir mejorando en las protecciones.
Éxitos.
En línea

MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.513


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Crackme V3 Colmena de CheckBox
« Respuesta #7 en: 18 Enero 2013, 20:49 pm »

Bueno, ya te han dado varias respuestas a tus preguntas, pero aún asi:

Tuviste algún problema para ejecutar el crackme y debuggear? Instalé algunas protecciones básicas y quería saber si te topaste con ellas o si directamente ni las vistes.

La primera protección es mandar cerrar los procesos típicos del olly
La segunda fue ocultar la API MessageBoxA, en lugar de cargarla de forma normal, usé GetProcAddress
La tercera protección es algo más compleja: Se genera un thread adicional e inyecto un código ASM en dicho thread para ejecutarlo, dejo el source:

Por lo visto los plugins de Olly también lo protegen de los threads que generas a partir de la aplicación principal :( Ya que la llamada a la API IsDebuggerPresent no se genera nunca desde el propio ejecutable. Seguiré investigando :P

PD. El source de thread en ASM no es mio

No tuve problemas para ejecutar el crackme bajo Olly. Use Olly 1.10 con el plugin StrongOD (uno viejito que tengo por ahi).

Vi las protecciones que has puesto.

La proteccion de cerrar los procesos con "taskkill" no funciono porque strongod usa un driver para que el olly no aparezca en la lista de procesos. A esto lo puedes verificar con Process Explorer, por ej.

El ocultar el mensaje de "chico bueno" seria inconveniente si lo hubiera buscado  :P. Normalmente, busco otros indicadores para saber si algo salio bien o mal, aunque asumi que algo pasaria al "ingresar" los datos correctos.

El tema del thread esta bueno. Incluso mire el codigo. Aqui te hago una sugerencia: No uses strings para armar el codigo. Es muy evidente. Puedes usar un monton de cosas raras en VB, abusando de la estructura de los ejecutables (sino preguntale a Karcrack que es un monstruo en ese tema)

Por ej: Si estudias como hace VB para llamar a una API de Windows, veras que puedes definir una API inexistente en una DLL conocida (o inexistente tambien) y ejecutar codigo llamandola (esto es lo genial). Esto despista y hace que el analisis sea mas complejo.

Otra cosa: fijate que en vez de usar CreateThread. puedes usar CallWindowProc para ejecutar el codigo. Incluso, puedes cargar el code asm en un array y ejecutarlo. Esto tiene la contrariedad de que si la maquina tiene DEP activo para todos los procesos, va a fallar, por lo que podrias hacer un VirtualAlloc y despues si ejecutar.

En resumen: el desafio fue entretenido. Me he divertido analizando el codigo, asi que para mi es tarea cumplida...  ;)

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Os dejo un crackme, mi primer crackme ^^ « 1 2 »
Ingeniería Inversa
frankener1986 14 13,632 Último mensaje 14 Agosto 2006, 00:59 am
por sircid
Broma Colmena xD
Programación Visual Basic
VirucKingX 9 2,394 Último mensaje 20 Diciembre 2006, 16:38 pm
por ~~
Modificar juego de "La Colmena"
Juegos y Consolas
KameSenin 1 2,946 Último mensaje 17 Enero 2009, 12:06 pm
por KameSenin
[CRACKME] Crackme 3 por MCKSys Argentina « 1 2 3 »
Ingeniería Inversa
MCKSys Argentina 29 19,725 Último mensaje 18 Enero 2013, 20:48 pm
por SITEA
[CRACKME] Crackme 4 por MCKSys Argentina « 1 2 »
Ingeniería Inversa
MCKSys Argentina 14 13,800 Último mensaje 6 Diciembre 2011, 02:46 am
por PeterPunk77
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines