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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  Acaso sera invencible ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Acaso sera invencible ?  (Leído 1,712 veces)
TrashAmbishion


Desconectado Desconectado

Mensajes: 756


Ver Perfil
Acaso sera invencible ?
« en: 2 Septiembre 2013, 19:45 pm »

Holas a todos los colegas, acabo de regresar de mis vacaciones (se acabo la gozadera) con un dolor de cabeza que para que, veran lo que en un principio parecia facil se ha vuelto un dilema y me refiero al CrackMe que pertenece a los Retos de Julio especificamente al VBCrackMe2...

Aqui estan todos los retos:

http://ultrashare.net/hosting/dl/5a58d57055

En este caso es un VB6 y hay que hallar un Code el cual se le pasa como argumento al ejecutar la aplicacion (vbcrackme codigo), lo primero que hice fue verlo en paños menores asi que le pedi a mi amigo VBDecompiler que lo analizara y obtuve como resultado esto

Como pueden apreciar trabaja al arrancar la aplicacion (Form_Activate) y asi como sobre 2 botones (Check y Click) que contiene la misma:



Apis que usa:



Un resumen de lo que hace:

Pues el programa al arrancar verifica si se le paso algun argumento y de aqui hay 2 posibilidades:

1 - Si no le paso ningun argumento o el argumento no es el correcto el programa escribe 6 bytes de basura en el comienzo del codigo del evento click del boton Unlock haciendo que cuando se de click este nos diga Nope, el tiene un manejador de errores que si no me equivoco lo que hace es tratar de controlar el error que se produce por la basura de los 6 bytes mandandonos ese mensaje de Nope.

2 - En caso de que nuestro code sea el correcto pues no escribe nada en el boton Unlock y al dar click este nos da el mensaje (If your password is correct the code is now unlocked) activando algun tipo de Flag (quizas pone una variable a True o algo parecido) que permite al boton Check verificar si el serial que introducimos es correcto o no.

Lo realizado por mi:

Mirando el codigo encontre que este realiza un XOR con una cadena (6¯'GšÎ)



Decidi pasarle como parametro esa cadena y vean lo que me dice SmartCheck:



No pude mostrarles la comparacion completa pero pueden apreciar algunas y que el XOR da cero, ahora lo que me inquieta es la linea que tengo seleccionada y es que el esta haciendo un LEN a una STRING vacia y dice que le devuelve 6 bytes, ahora cuando lo tire contra el OLLY este me muestra esto:



Disculpen que se vea asi pero bueno lo esencial se ve si descargan la veran mejor.

En la parte 1 es dentro del CALL LEN y como ven va a mover ESP+4 a EAX que es la direccion que esta en la 2 con el valor 00000000 resultado del FOR, despues cuando hace el TEST EAX, EAX no hace el JE porque EAX vale la direccion 0015000C y entonces hace las 2 operaciones restantes guardandose un 6, el que vemos en el SmartCheker.

Aqui viene mi pregunta supongo que el code que puse no es el correcto?

Ayuda... Gracias
« Última modificación: 2 Septiembre 2013, 21:39 pm por TrashAmbishion » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Un fallo en Diablo III desbloquea un 'modo invencible'
Noticias
wolfbcn 1 2,264 Último mensaje 24 Julio 2012, 00:12 am
por cronos426
Eliminado el truco que hacía invencible al mago en Diablo III
Noticias
wolfbcn 0 1,404 Último mensaje 25 Julio 2012, 21:25 pm
por wolfbcn
C++ Acaso while no es lo mismo que if?
Programación C/C++
the_box 6 2,784 Último mensaje 22 Abril 2014, 17:36 pm
por the_box
acaso es legal el skimmer
Seguridad
Robocop8 7 3,473 Último mensaje 9 Abril 2017, 19:15 pm
por Soy_El_Misterioso
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines