Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: x4uth en 3 Abril 2006, 14:46 pm



Título: CrackMe03 by x4uth
Publicado por: x4uth en 3 Abril 2006, 14:46 pm
Objetivo: Generar un codigo valido, hacer tutorial
nadie me ha enviado soluciones aun...
(opcional): Eliminar Nag, parchear para que funcione con OllyDbg limpio (sin plugins ni modificaciones) , hacer tutorial
06/06/06 ^A|aN M0R3n0^ Eliminada Nag y Parcheado para que funcione con OllyDBG limpio

(http://foro.elhacker.net/Themes/default/images/bbc/url.gif)Descargar CrackMe03.rar (http://personal.telefonica.terra.es/web/carlos-ea/ie/CrackMe03.rar)

a ver si me impresionais  :P




Título: Re: CrackMe03 by x4uth
Publicado por: tena en 4 Abril 2006, 00:01 am
El archivo descomprimido no anda, esta roto.  :huh:
Subilo denuevo que me parece que no anda, pues ya lo baje en dos maquinas diferentes y sigue saliendo el error.
TENA


Título: Re: CrackMe03 by x4uth
Publicado por: OberonCracker en 4 Abril 2006, 02:29 am
Bueno ya lo baje y lo he testeado en tres segundos, todo pinta bien, aunque mi primera impresion es ¿que le han hecho a la cabezera de este crackme? De seguro nada... je, je. Bueno ya veremos.


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 4 Abril 2006, 09:33 am
El archivo descomprimido no anda, esta roto.  :huh:
Subilo denuevo que me parece que no anda, pues ya lo baje en dos maquinas diferentes y sigue saliendo el error.
TENA

que error te da??
yo volvi a bajar y probar y todo bien (yo tengo WinXP sp2 puede que tenga algo que ver), si lo estas intentando abrir desde el mismo WinRAR no abrira, copialo a una caperta y abrelo desde alli.
Tambien cierra todos los debuggers antes de abrirlo ;)
Un saludo


Título: Re: CrackMe03 by x4uth
Publicado por: tena en 5 Abril 2006, 15:52 pm
yo volvi a bajar y probar y todo bien (yo tengo WinXP sp2 puede que tenga algo que ver)

Tienes razon ahi esta el problema. Lo he probado en wi98.

Saludos              tena


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 8 Abril 2006, 13:08 pm
como vais?


Título: Re: CrackMe03 by x4uth
Publicado por: OberonCracker en 8 Abril 2006, 17:27 pm
Como voy? El crackme me cerro mi antivirus, entonces dije este revenger se las viene con todo. Bueno como estoy en examen de botanica tropical, seguro en una semana nuevamente arremeto con todo lo habido y por haber, ja, ja, ja. Saludos crackternos.


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 14 Abril 2006, 15:14 pm
10 dias 0 soluciones..


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 11 Mayo 2006, 10:31 am
*bump* 38 dias ...


Título: Re: CrackMe03 by x4uth
Publicado por: Shaddy en 13 Mayo 2006, 12:12 pm
*bump* 38 dias ...

0040113C  |.  FF15 E8BC4000 CALL NEAR DWORD PTR DS:[40BCE8]          ;  kernel32.77E72ED3

 en esta linea revienta, no se si lo has querido hacer así pero he tenido que modificar la tabla y restarle dos bytes, y dejarlo así...

0040113C  |.  FF15 E8BC4000 CALL NEAR DWORD PTR DS:[40BCE8]          ;  kernel32.CreateToolhelp32Snapshot

así que si buscas realmente el problema está en ésta línea ¬¬..

004010A3      83C0 02       ADD EAX,2

que añade 2 bytes en la tabla de importaciones..

y así en diversas situaciones, luego busca procesos en varios bucles a través de la discreta API OpenProcess xD.. pero weno, supongo que todo esto forma parte de la protección.. en fin, lo interesante de un crackme es que si lo haces correr sin debugger funcione, no se si esto os pasa a vosotros pero a mi no me fuciona.. a menos que le parchee lo de los 2 bytes.. en fin..

Salu2..


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 13 Mayo 2006, 14:29 pm
logicamente sin debugger funciona, tiene varias protecciones puede que haya algun problema de compatibilidad, yo tengo windows Xp service pack 2 y me funciona bien, en todo si ese es el unico que error que te da puedo arreglarlo si hay otros entonces tendria que verlos todos :/

http://www.freeuploader.com/out.php/i3728_kernel32.rar


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 4 Junio 2006, 20:26 pm
hola yo tambien soy oberon cuantos oberon hay :S, pero soy oberon de rvlcn

www.rvlcnsecurity.com
www.rvlcn.com
www.revolucion7000.com


mi mail es Oberoncracker@gmail.com :D, no puedo escargar tu crackme para intentar crackearlo :D sobelo en otro lado


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 4 Junio 2006, 20:41 pm
hola yo tambien soy oberon cuantos oberon hay :S, pero soy oberon de rvlcn

www.rvlcnsecurity.com
www.rvlcn.com
www.revolucion7000.com


mi mail es Oberoncracker@gmail.com :D, no puedo escargar tu crackme para intentar crackearlo :D sobelo en otro lado

no se a mi me va perfectamente el link , = ahi te lo envie al correo ese


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 5 Junio 2006, 23:28 pm
00401C0E   .  68 FF0F1F00   PUSH 1F0FFF                              ; |Access = PROCESS_ALL_ACCESS
00401C13   .  FF15 10904000 CALL DWORD PTR DS:[<&KERNEL32.OpenProces>; \OpenProcess
00401C19   .  8985 B8FDFFFF MOV DWORD PTR SS:[EBP-248],EAX
00401C1F   .  6A 00         PUSH 0                                   ; /ExitCode = 0
00401C21   .  8B95 B8FDFFFF MOV EDX,DWORD PTR SS:[EBP-248]           ; |
00401C27   .  52            PUSH EDX                                 ; |hProcess
00401C28   .  FF15 0C904000 CALL DWORD PTR DS:[<&KERNEL32.TerminateP>; \TerminateProcess


lo que hace es buscar el nombre del ollydbg en los procesos luego cerrarlo :D. luego presionamos
la tecla ctrl+f9 para saltar hasta el ret y seguimos el paso con la tecla f8 hasta llegar :

004011D0      55            PUSH EBP

traceamos y encontramos algo interesante:

004011D7  |.  64:A1 3000000>MOV EAX,DWORD PTR FS:[30]
004011DD      05 C980418E   ADD EAX,8E4180C9
004011E2      05 9F7FBE71   ADD EAX,71BE7F9F
004011E7      3E:8B00       MOV EAX,DWORD PTR DS:[EAX] -> contiene el resultado 0x70
004011EA      3C 70         CMP AL,70
004011EC      74 10         JE SHORT CrackMe0.004011FE

asi que nopeamos los ADD y Los MOv Y reemplazamo por un MOV eax,0  y quedara asi


004011DD      B8 00000000   MOV EAX,0
004011E2      90            NOP
004011E3      90            NOP
004011E4      90            NOP
004011E5      90            NOP
004011E6      90            NOP
004011E7      90            NOP
004011E8      90            NOP
004011E9      90            NOP
004011EA      3C 70         CMP AL,70


presionamos f9 y el programa  se ha ejecutado correctamente

crackme patchado:

http://rapidshare.de/files/22308452/CrackMe03_patchado.rar.html

ahora si se puede ejcutar con el ollydbg :D

saludos

Oberon  MiEMBRO De RVLCN

www.rvlcnsecurity.com
www.rvlcn.com
www.revolucion7000.com




Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 5 Junio 2006, 23:58 pm
aun no se ejecuta el crackme , solo sale la nag, pero vas por buen camino :)


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 6 Junio 2006, 02:09 am
hola, si tienes razon ya vi el error jejeje :) 


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 6 Junio 2006, 02:36 am
que nos queda mas que continuar!!!!!

00403060   .  61            POPAD
00403061   .  6A 00         PUSH 0                                   ; /lParam = NULL
00403063   .  68 F01F4000   PUSH CrackMe0.00401FF0                   ; |DlgProc = CrackMe0.00401FF0
00403068   .  A1 04B84000   MOV EAX,DWORD PTR DS:[40B804]            ; |
0040306D   .  50            PUSH EAX                                 ; |hOwner => NULL
0040306E   .  6A 6C         PUSH 6C                                  ; |pTemplate = 6C
00403070   .  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]             ; |
00403073   .  51            PUSH ECX                                 ; |hInst
00403074   .  FF15 E8904000 CALL DWORD PTR DS:[<&USER32.DialogBoxPar>; \DialogBoxParamA
0040307A   .  68 90304000   PUSH CrackMe0.00403090

esta es la nag colocamos un bp a esta api:
00402091  |.  FF15 00904000 CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; \GetProcAddress

traceamos hasta :

00402091  |.  FF15 00904000 CALL DWORD PTR DS:[<&KERNEL32.GetProcAdd>; \GetProcAddress -> coje la direccion de la api msbox
00402097  |.  A3 D4BC4000   MOV DWORD PTR DS:[40BCD4],EAX
0040209C      68 ECB64000   PUSH CrackMe0.0040B6EC

lo uqe debemos hacer es que cierre la ventana si miramos un poco mas abajo observamos lo siguiente

004021F0  |.  6A 00         PUSH 0                                   ; /Result = 0
004021F2  |.  8B4D 08       MOV ECX,DWORD PTR SS:[EBP+8]             ; |
004021F5  |.  51            PUSH ECX                                 ; |hWnd
004021F6  |.  FF15 10914000 CALL DWORD PTR DS:[<&USER32.EndDialog>]  ; \EndDialog


justo la api que necesitamos entonces donde esta el  PUSH CrackMe0.0040B6EC colocaremos un salto asi

0040209C     /E9 4F010000   JMP CrackMe0.004021F0




y listo seguimos traceando con f8 y caemos aka ->


00403090   .  6A 00         PUSH 0                                   ; /lParam = NULL
00403092   .  68 D0264000   PUSH CrackMe0.004026D0                   ; |DlgProc = CrackMe0.004026D0
00403097   .  8B15 04B84000 MOV EDX,DWORD PTR DS:[40B804]            ; |
0040309D   .  52            PUSH EDX                                 ; |hOwner => NULL
0040309E   .  6A 65         PUSH 65                                  ; |pTemplate = 65
004030A0   .  8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]             ; |
004030A3   .  50            PUSH EAX                                 ; |hInst
004030A4   .  FF15 E8904000 CALL DWORD PTR DS:[<&USER32.DialogBoxPar>; \DialogBoxParamA

presionamos ctrl+G y tipeamos esta direccion 004026D0, miramos un poc mas abajo a la direcion

00402749   .  833D 08B84000>CMP DWORD PTR DS:[40B808],32 -> colocamos un bp
00402750   .  74 08         JE SHORT CrackMe0.0040275A -> cambiamos je a jmp 0xeb
00402752   .  6A 00         PUSH 0
00402754   .  FF15 48BC4000 CALL DWORD PTR DS:[40BC48]               ;  kernel32.7C81CAA4
0040275A   >  68 69274000   PUSH CrackMe0.00402769

y traceamos hasta llegar

004027EC   .  50            PUSH EAX                                 ; |hWnd
004027ED   .  FF15 04914000 CALL DWORD PTR DS:[<&USER32.SetWindowPos>; \SetWindowPos
004027F3      E8 78FDFFFF   CALL CrackMe0.00402570 -> nopeamos este CALL que es donde
004027F8   .  B8 01000000   MOV EAX,1
004027FD   .  E9 62070000   JMP CrackMe0.00402F64


vee todo nuestros procesos, para llegar a esa Conclusión debemos poner un bp a la apì createoolhelper

y quedaria asi

004027F3      90            NOP
004027F4      90            NOP
004027F5      90            NOP
004027F6      90            NOP
004027F7      90            NOP
004027F8   .  B8 01000000   MOV EAX,1
004027FD   .  E9 62070000   JMP CrackMe0.00402F64

Guardamos los cambios y ahora si el crackme se ejecuta directamenta
:D.
http://rapidshare.de/files/22319791/CrackMe03_patchado22.rar.html

MiEMBRO DE RVLCN
Oberon
www.rvlcnsecurity.com
www.rvlcn.com
www.revolucion7000.com


Título: Re: CrackMe03 by x4uth
Publicado por: pERICOTE en 6 Junio 2006, 03:47 am
Lo lograste OberonCracker se ve que las clases de botanica tropical te hicieron bien, he, jajaja.
 ;D ;D ;D

Saludos (a ver si nos das la leccion de como hallar el serial)


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 6 Junio 2006, 03:56 am
este te estas confundindo de oberon de RVLCN  :S


Título: Re: CrackMe03 by x4uth
Publicado por: pERICOTE en 6 Junio 2006, 05:04 am
Que acaso no eres oberoncracker el popular creg?  :P
De todos modos oberon, pluton, saturno, seria ideal que nos des la mano con el serial de x4uth que esta bien bravo...
 ;D ;D ;D


Título: Re: CrackMe03 by x4uth
Publicado por: tena en 6 Junio 2006, 05:42 am
que paso con el viejo y Kerido OberonCracker? Sigue con lecciones de Botanica? Estan de moda los OBERON jeje

SALUDOS              TENA
   
 


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 6 Junio 2006, 10:30 am
buen trabajo :D aunque aun necesita plugins para funcionar....


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 7 Junio 2006, 05:01 am
y para que sea al 100% el otro no lo pase porq ue no me di cuenta jejejeje bueno aki dejo la solcuion :D

004011EE  |.  64:A1 3000000>MOV EAX,DWORD PTR FS:[30] -> Isdebupresent
004011F4  |.  83C0 02       ADD EAX,2
004011F7  |.  3E:8B00       MOV EAX,DWORD PTR DS:[EAX]
004011FA  |.  84C0          TEST AL,AL
004011FC      74 16         JE SHORT CrackMe0.00401214 -> cambiamos este salto a jmp  0xEB

ahora si espero haberme dado cuenta de todo  :D

http://rapidshare.de/files/22413517/CrackMe03_patchado33.rar.html

pues si soy el tal creg :D popular? no creo aprendiz soy

por que salia error en 98 y algunos xp que no tenian el sp2 :

Bueno por que  x4uth  sumaba   unos bytes para que se pasara el bp  que ponia el ollydb a las librerias, y esas librerias por ejemplo el kernel3.dll son diferentes a las de 98 y xp sin sp2, bueno es un metodo anti bp hace tiempo hice un fuente  con la misma tecnica en el foro rvlcn

http://www.rvlcnsecurity.com/foro/showthread.php?t=77




06/06/06

MiEMBRO DE RVLCN
Oberon
www.rvlcnsecurity.com
www.rvlcn.com
www.revolucion7000.com


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 7 Junio 2006, 09:25 am
muy bien ,  a si sacas un serial ahora..

Citar
por que salia error en 98 y algunos xp que no tenian el sp2 :

Bueno por que  x4uth  sumaba   unos bytes para que se pasara el bp  que ponia el ollydb a las librerias, y esas librerias por ejemplo el kernel3.dll son diferentes a las de 98 y xp sin sp2, bueno es un metodo anti bp hace tiempo hice un fuente  con la misma tecnica en el foro rvlcn

si, los bytes despues los recostruia en este caso manual, tenia pensado hacer un ReadProcessMemory de esos bytes y ejecutarlos en mi programa antes de saltar pero no se como distinguir el final de una instruccion xk si pillas una instruccion a la mitad te quedas=, alguna idea?


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 8 Junio 2006, 04:35 am
buena man pero ya no es necesario de poner la instruccion readproceesmemory para leer los bytes, por que si tenemos la direccion podemos leer apartir de ahi por ejemplo:

depues de la api gerpocAddres masm :

invoke GetProcAddress,DIR_USER,addr FunciON
mov dir,eax
como sabes esta api nos devuelve la direccion donde se ecuentra la libreria, entonces para leer  el primer byte seria asi

xor eax,eax
mov  al, byte ptr [dir]

 y  en eax tendremos los priemros bytes con eso ya podemos darnos cuenta que libereria puede pertenecer  a win98 sp2, pero para estar seguro  se tien que leer la primera instrucion y si eres astuto  lo que lees puedes escribirlo en tu programa y luego saltarte esa isnturcicon de  libreria de window

saludos

Oberon

www.rvlcn.com
www.rvlcnsecurity.com
www.revolucion7000.com

 Listas-RVLCN : http://rvlcnsubscribir.tk/   (google)
              http://www.egrupos.net/grupo/rvlcn/alta    (egrupos)

 FORO - CHAT  :
           http://www.rvlcnsecurity.com/foro/

(http://www.freewebtown.com/amoreno/alan.gif)



Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 8 Junio 2006, 09:24 am
si bueno el tema no es con que metodo se leen los bytes, en ese CrackMe la intruccion que se salta esta escrita, el problema es que la instruccion varia segun las versiones del kernel, se podria identificar el kernel segun los bytes o incluso hacerle un checksum pero ad+ de ser un coñaso sigue sin ser compatible al 100%


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 9 Junio 2006, 03:54 am
por que no lees lo de la libreria y lo que lees lo escribes en tu programa claro que a la sección tienes que dale el flag write para que puedas hacer eso..


Título: Re: CrackMe03 by x4uth
Publicado por: x4uth en 9 Junio 2006, 11:31 am
esa es la idea, no tengo que darle flag write con un alocar un pedaso de memoria basta, el problema es que hay instrucciones que usan mas bytes que otras y si no sabes que intruccion va a haber toncs no sabes cuantos bytes tienes que leer, si cortas una instruccion por la mitad la cagaste..


Título: Re: CrackMe03 by x4uth
Publicado por: ^A|aN M0R3n0^ en 10 Junio 2006, 00:12 am
sip, entonces serai mejor, comparar y debes investigar, como comienzan las demas librerias para que decuardo a la comparacion puedas leer :D...