Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - negux

#1
Yo ya habia obtenido un serial correcto, pero seguia mandando Incorrect!, hasta que vi el mensaje de apuromafo, una vez parchado y con el serial correcto, ya sale :)
Gracias

Saludos.
#2
Que tal, veran, estoy usando proteus con un PIC 18f4550 , para una comunicacion usb
atravez de java con jpicusb, al correr el proteus me sale el icono de nuevo hardware encontrado, aqui tengo que instalar los drivers usb, pero no los instala dice que no puede, alguien sabe por que sucede esto?
estos son los drivers :MCHPUSB Driver
tengo win xp de 32 bits
estaba siguiendo este tutorial:

http://www.youtube.com/watch?v=juDve7zOX0s&feature=relmfu

Gracias
#3
Crackme #1 Gizmo by negux
Aquí traigo la realización de otro crackme que encontré en algún mirror de crackmes; así que empecemos.


Veamos que nos dice el RDG.


Abrámoslo con el Olly


Caemos en esa zona y vemos que tiene un PUSHAD, así que lo pasamos con F8, y hacemos follow in dump del registro ESP.


Marcamos los primeros cuatro bytes y marcamos el breakpoint.



Damos run y llegamos aquí, vemos el POPAD, y abajo el salto que nos llevara al OEP, le damos F8 hasta que nos lleve ala dirección del salto. Y hacemos dump del proceso, yo lo hice con el plugin OllyDump :P



Una vez que hicimos ese proceso, lo guardamos con otro nombre y ahora si, podemos empezar a trabajar con el crackme, je.
Buscamos por text strings y nos aparece esto:


Vemos una cadena sospechosa, bueno dos, pero no les hagamos caso por el momento, le doy doble clic donde terminaría la primera parte "Part1 finished", para ver qué pasa en esa zona.


Caigo aquí, pero subo para buscar el inicio del código o alguna comparación o salto que me lleve a esta zona :P


Llego a esta parte, vemos arriba como está la cadena sospechosa, decido ponerle breakpoint ahí, y aunque arriba hay una comparación y luego un salto mi intuición me dice que ponga el breakpoint aquí, seguramente esa comparación a de ser para que metamos algo en el serial.
Damos run:


Vemos como aquí va a meter nuestro serial, seguimos traceando hasta llegar a esta función que compara :P


Vemos en el stack los argumentos a comparar.


Vayamos a esa direcciones haber que guarda.

Vemos que en esa zona esta nuestro serial y la otra cadena sospechosa, así que probemos:

Lo hicimos, llegando a este punto pensé que ya había terminado je, pero bueno ahí me dice que hay una segunda parte, veamos de que trata.


Nombre y serial y en este caso.
Bueno hagamos lo mismo que el primero, buscar por text strings, "try again", y subo en la búsqueda del inicio, llego a esta parte:

Vemos otra vez arriba una cadena sospechosa, pero no, en este caso no es el serial, pongo un breakpoint en el inicio.
Doy Run (F9),  para y empezamos a tracear, y vemos que mete a EAX la cadena "t@b@c"



Seguimos traceando y llegamos  a esta zona:

Vemos que ahí ya metió en EAX, el valor de 74, que es el hexadecimal de "t", de la cadena "t@b@c", sigamos:


Vemos que ahora mete 6E, a EAX, que es el valor de "n", de mi serial, "negux".



Seguimos traceando y llegamos a esta función, que hace un Xor, entre el valor en hexadecimal de cada letra de "t@b@c" y cada letra de mi serial "negux":



Aquí vemos cómo se va generando nuestro serial, quedando al final de esta forma.
negux -> 6E 65 67 75 78                                                           t@b@c -> 74 40 62 40 63
6E xor 74 = 1A
65 xor 40 = 25
67 xor 62 = 5
75 xor 40 = 35
78 xor 63 = 1B
Name: negux
Serial: 1A255351B
Eso lo metemos y llegamos a la última parte ;)

Un NAG. Para esto hacemos, search for -> constant y buscamos: 2B0:


Presionamos Ok y nos aparecen varias instrucciones, una de ellas debería de ser la que buscamos eliminar, llegamos aquí:


Este es el call de nuestra NAG, así que lo que hice fue nopearla :P, quedando así:


Y listo, guarde los cambios en el ejecutable y no mas NAG, y así terminamos este crackme que no pensé que fueran tres en uno je.

Gracias

No se por que no me puso las imagenes asi  :huh:

PD. Aqui dejo el link si gustan descargar el tuto, viene con el crackme y un pequeño keygen de la segunda parte, solo que el serial lo da en minusculas, y tendria que cambiarse a mayusculas je  :P

http://www.mediafire.com/?zf1f4n8emacq6cv


*Modificado :)
#4
Objetivo: Crackme v10.0 Eternal Bliss
Cracker: negux


Este no es el típico crackme de buscar un serial, así que veamos de qué se trata.




Algo nuevo para mi, presionamos el botón Check pero no nos manda algún mensaje, mmm veamos que nos dice el RDG.



Esta hecho en Visual Basic y además nos dice que esta P-Code( para entender bien como tratar este tipo de crackmes recomiendo leer el tutorial que me sirvió para este crackme, es de und3r, en el mismo documento hace referencia a una lección de Ricardo Narvaja,pongo la referencia al final).

¿Qué es P-Code?
Cuando compilados un programa con VB, este nos da la posibilidad de elegir el tipo de compilado diferenciando entre código NATIVO y P-CODE:
el código nativo tiene la gran ventaja que ejecutan el código en la sección code del programa permitiendo esto que sea más "fácil" lograr saltar la seguridad, por otro lado el  P-CODE no posee código de ejecución dentro de la sección code. solo posee una serie de códigos llamados P-Codeque son interpretados y ejecutados por la dll de Visual Basic, haciéndonos una tarea más difícil. [1].

Bueno, si leen el documento nos menciona que abramos el crackme con Exdec, así que hagamoslo.




Ahí está nuestro crackme, si somos observadores y con un poco de perspicacia veo algo que me llama la atención.




Los cuento y son 24, que es el número de cuadritos del crackme, entonces me hace suponer que checa esos cuadritos para saber su estado.
Y como dice und3r que existen estos dos P-codes:
1)BranchF=1C
este P-Code es similar a un salto condicional, este salto se realiza si la comprobación anterior es falsa.

2)BranchT=1D
este P-Code es el opuesto a BranchF es decir, este salta cuando la comprobación es verdadera T=True F=false
Asi que buscamos el primer BranchF





Ahí vemos algunos y la dirección a donde nos llevaría si es True, dichas dirección son el inicio de la comprobación de los cuadritos.
Anotamos las direcciones de cada uno, en total 24:
Así que abrimos el crackme en el Olly y en el dump vamos a la dirección de cada uno.


Uploaded with ImageShack.us
Vemos:



Ahí vemos el 1c, BranchF, lo cambiamos a 1D




Y hacemos el mismo procedimiento con las 24 direcciones que anotamos. Una vez hecho esto copiamos los cambios al ejecutable y lo guardamos con otro nombre, asi que probemos lo que hicimos.
Abrimos nuestro nuevo crackme y marcamos cualquier cuadrito y vemos que pasa.






Funcionó  ;D

Referencia:
[1]. P-Code por UND3R. http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1401-1500/1409-Introduccion%20al%20cracking%20en%20P-Code%20parte%20I%20por%20UND3R.doc

#5
Aqui la solucion a otro crackme je


http://www.mediafire.com/?o92vw33odo96s86

por el momento estoy haciendo crackmes no tan dificiles, para irme acoplando a la ing inversa  :P

Saludos y Gracias.
#6
Ps.. arriba puse los links de los crackmes, pero si gustas que los suba a otro servidor, lo hare ;)
Saludos
#7
Bueno aqui dejo otro crackme resuelto, pide tambien el keygen, ese si se los debo jeje :silbar:

http://www.mediafire.com/?wsamoh9248a6475

viene incluido el crackme

Gracias  ;D
#8
Claro, aqui estan mira:

http://usuarios.lycos.es/crackmes/+NCR/Crackme1.rar

http://usuarios.lycos.es/crackmes/Devastador/Crackme20_porDevastador.rar

Los saque de esta web

http://usuarios.multimania.es/crackmes/ver.php?texto=#000000&fondo=#FFFFFF&link=#333333&%20orden=nivel

Como ves estoy buscando crackmes sencillos para poder practicar  ;D
si conoces otra web u otros crackmes de nivel no muy alto, podrias decirme?

Gracias
#9
Ingeniería Inversa / Solucion a dos crackmes
14 Enero 2012, 09:10 AM
Hola que tal, pues eso, subo la solucion de 2 crackmes que acabo de hacer, son nivel muy basico je, tengan en cuenta que me estoy iniciando en la ing inversa
asi que no sean muy duros conmigo :P
uno es de +NCR, crackme1 y otro de Devastador, crackme v2.0

http://www.mediafire.com/?lk2gv32ceca8l3c

Espero ya pronto subir de nivel :(

Graciass
#10
Ingeniería Inversa / Ayuda con un crackme
9 Enero 2012, 15:30 PM
Que tal, recien estoy terminando el curso de Ricardo y me dispuse a hacer un crackme, bueno, les cuento, el crackme estaba empacado con exe stealth, y con ayuda de google pude desempacarlo :P y Bueno tengo esta parte de lo que muestra el olly, donde lee lo que pongo como serial, y salta al mensaje de Error.
Código (asm) [Seleccionar]

00401099   .  E8 E8000000     CALL <JMP.&user32.GetDlgItemTextA>       ; \GetDlgItemTextA
0040109E   .  83F8 0C            CMP EAX,0C
004010A1   .  75 16                JNZ SHORT F7Crackm.004010B9
004010A3   .  8D35 00304000 LEA ESI,DWORD PTR DS:[403000]
004010A9   .  0FB646 FF         MOVZX EAX,BYTE PTR DS:[ESI-1]
004010AD   .  3806                CMP BYTE PTR DS:[ESI],AL
004010AF   .  75 08                JNZ SHORT F7Crackm.004010B9
004010B1   .  60                    PUSHAD
004010B2   .  E8 77FFFFFF      CALL F7Crackm.0040102E
004010B7   .  EB 51               JMP SHORT F7Crackm.0040110A
004010B9   >  68 00304000    PUSH F7Crackm.00403000                   ; /Arg1 = 00403000 ASCII "555555555555"
004010BE   .  E8 6C000000    CALL F7Crackm.0040112F                     ; \F7Crackm.0040112F
004010C3   .  6A 00               PUSH 0                                               ; /Style = MB_OK|MB_APPLMODAL
004010C5   .  68 24324000     PUSH F7Crackm.00403224                   ; |Title = "Error"
004010CA   .  68 19314000     PUSH F7Crackm.00403119                   ; |Text = ""
004010CF   .  6A 00               PUSH 0                                               ; |hOwner = NULL
004010D1   .  E8 B6000000    CALL <JMP.&user32.MessageBoxA>       ; \MessageBoxA

ahi compara Eax con 0c, que es la longitud del serial, si no es igual salta al mensage de error, en este caso no salta (digite doce veces, "5"), luego vemos que mueve a ESI el serial
que ingrese, y aqui viene el problema, no le entiendo muy muy bien a la siguiente instruccion: MOVZX EAX,BYTE PTR DS:[ESI-1], segun yo: mueve a eax un byte del contenido de
DS en la direccion de memoria [ESI-1], olly marca DS:[00402FF]=00, y el movzx lo rellena con ceros.
y de ahi compara un byte de mi serial con AL:
AL=00
DS:[00403000]=35 ('5')
y dependiendo del resultado de esa comparacion salta al cartel malo o bueno.

Codigo de Mensaje bueno:

0040102E  /$  6A 00             PUSH 0                                                ; /Style = MB_OK|MB_APPLMODAL
00401030  |.  68 1C324000   PUSH F7Crackm.0040321C                   ; |Title = "Mensaje"
00401035  |.  68 18324000   PUSH F7Crackm.00403218                    ; |Text = "Ok"
0040103A  |.  6A 00             PUSH 0                                               ;  |hOwner = NULL
0040103C  |.  E8 4B010000  CALL <JMP.&user32.MessageBoxA>       ;  \MessageBoxA


Y pues bueno, hasta aqui llegue, no se que serial compara para saltar al mensaje bueno, busque las api que utiliza y no hay alguna que compare, la unica comparacion que me lleva al mensaje bueno es esa con AL
alguna sugerencia/ayuda ??

Gracias

Edito.

Al introducir 20 caracteres (16, "5" y 4, "9");

llego a este call:

004010BE   .  E8 6C000000   CALL F7Crackm.0040112F                   ; \F7Crackm.0040112F

y me sale un mensaje de Error:

Don´t know how to step because memory at address 399393939 is not readable, try to change EIP or pass exception to program

Analizando eso en el Dump veo esto:

00403000  35 35 35 35 35 35 35 35  55555555
00403008  35 35 35 35 35 35 35 35  55555555
00403010  39 39 39 39 00 00 00 00  9999....

Supongo, no se, que como que trata de ejecutar esa direcion de memoria -> 399393939 que son los 9999 que escribi, eso un el overflow? y de ahi como le sigo  :huh: :rolleyes: