Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: Иōҳ en 12 Octubre 2009, 21:20 pm



Título: Inline Patching NotePad -Asm & OllyDBG-
Publicado por: Иōҳ en 12 Octubre 2009, 21:20 pm
Inyeccion NotePad -Asm & OllyDBG-

Bueno parecer que este post no tiene dueño xD ya que lo an visto en una pagina y el blog donde yo lo vi dicen q no se acuerda de la pagina donde lo vio asi que Creditos para esa pagina ;) y Harner por volverla hacer :D

He y llarmarlo Inyeccion, no se si la verdad lo es pero bue. me gusta como suena xD

Ahora viene el TuTo totalmente escrito por mi e editado por su servidor en la forma de explicacion :)

Este tutorial tiene fines totalmente didácticos. No me responsabilizo por cómo se pueda utilizar el mismo.

IMPORTANTE:Cualquier tipo de error que encuentren el el tutorial, posteenlo. De esta manera aprendemos todos.
IMPORTANTE:El Debugger a usar es el OllyDBG.
IMPORTANTE:Algunas direcciones de Memoria vistas en este Tutorial puede ser Diferente al del lector.
IMPORTANTE:Escribir las Direcciones de Memorias en uso para su proxima utilización en este Tutorial.

Conocimientos previos básicos requeridos.


Conocimiento Basico en ASM.
Conocimiento en Utilización del OllyDBG.


Software necesario


OllyDbg 1.10 (http://www.ollydbg.de/odbg110.zip)
NotePad.


1 ) Para Comenzar Ejecutemos El NotePad.

2 ) Abrir el OllyDBG y abrir el NotePad en el Mismo.

(http://i37.tinypic.com/do8710.png)


3 ) Buscar Espacios Vacios.

Ahora buscaremos espacios vacios DB 00 (en otros Casos algo que el OllyDBG no pudo analizar, y este no lo es xD),

4 ) Editar.

Hagamos lo siguiente:


-Sombrear una cierta cantidad de DB 00
-Click Derecho BINARY - EDIT, o Simplemente Ctrl + E*

*Como se muestra en la imagen

(http://i38.tinypic.com/35ipzs7.png)

Escribimos Para el Titulo: "Inyeccion By Nox"
Escribimos Para el Mensaje: "Personalizacion"*

*Por supuesto hacerlo Uno por Uno, como se muestran en las imagenes:

Para el Titulo:
(http://i34.tinypic.com/j5cdwg.png)

Damos OK

Esto Aparecerá:

(http://i35.tinypic.com/2gvinty.png)

--> Pues facil Hacer lo siguiente:
-Sombrear el Cod Editado
-Click Derecho ANALYSIS - ANALISYS CODE

Para el Mensaje:

(http://i36.tinypic.com/2610x1c.png)

Damos OK

--> Repetir lo Anterior

Este Es Final del Procedimiento:

(http://i34.tinypic.com/2h364on.png)

5 ) Creando un MsgBox.

Hacer lo siguiente*:

PUSH 0; Para el Boton OK
PUSH 30AA7EA2; Pusheamos Nuestra Direccion de memoria ( Addy ) de Nuestro ASCII ( En este caso "Personalizacion")
PUSH 30AA7E91; Pushemaos el Addy de Nuestro Mensaje
PUSH 0; Para nuestro icono, en este caso no habra xD
Call MessageBoxA; Llamar a la API de User32.dll

*Como se muestra en la imagen:
(http://i35.tinypic.com/24biu0g.png)

5 ) Llamando a Nuestra Rutina
Ustedes Piensan esta listo pues no! ya que como el programa ya tiene su rutina de ejecucion, no tomara la nuestra por logica u_u, lo que haremos es pues inyectar nuestra rutina en la del programa.

Hacemos lo siguiente:
-Click Derecho GOTO - ORIGEN

(http://i35.tinypic.com/oabxc9.png)

Editemos Nuestra primera linea del codigo, lo que haremos es hacer un salto ( jmp ) hacia nuestra rutina ( espero que tengas las addys ya escritas y guardadas )

Hacemos lo siguiente:

Un Jump hacia nuestra rutina:
-Ya situados en el ORIGEN apretar  SPACE
-Hacer un Jump con nuestra addy de la rutina*

*Guardar la syntaxis asta el Call visto! para su proxima utilizacion.

JMP 30AA7EB2

(http://i34.tinypic.com/5os7k4.png)

Vemos que se NOPeo el push a una addy del programa ( espero que ya lo hallan guardo ese push y sus direcciones de memoria)

(http://i37.tinypic.com/296i1k6.png)

Muy bien, hasta ahora vamos OK, ahora si borramos un par de lineas en algun codigo del programa no va a funcionar asi que hagamos lo siguiente:

6 ) Normalizar nuestra Inyeccion

Hemos borrado dos lineas del programa:

PUSH 70
PUSH 1001898

Normalicemos, Ir hacia el final de nuestra rutina del MsgBox, y hacer lo siguiente:

PUSH 70
PUSH 1001898
JMP 300019F5

(http://i36.tinypic.com/w1u4px.png)

Lo que estamos haciendo es hacer un simple JUMP hacia nuestra Rutina Restaurar el Cod del Programa y hacer otro JUMP hacia algunos de los NOP hechos al Editar El Origen, para que el programa ejecute normal pasando por Nuestro MessageBoxA. xD xD

Asi que si tracean el Programa veran esto:

(http://i37.tinypic.com/6jhg1j.png)

Ahora sabemos que cuando cerremos y habramos devuelta el OllyDBG con el NotePad pues no se guardara lo que modificamos, asi que hagamos lo siguiente:

-Click Derecho COPY TO EXECUTABLE - ALL MODIFICATIONS .
-Se habre otra ventana. Click en COPY ALL
-Cerremos la siguiente.
-Finalmente Cerramos la Ventana D del OLLY ( Aparece en el Marco Superior Derecho)
-Lo Guardan con el Nombre que desean y Listo :D

Aparecera Nuestro MsgBox


(http://i37.tinypic.com/6jhg1j.png)

Y despues Se abrira nuestro NotePad JuJuJuJu :D

Bueno ya esta la idea xD ahora que podran hacer con esto pues es su imaginacion, como meter ShellCodes :P ya depende de ustedes lo que sea ;)

Si este no es el Resultado revisen bien cada linea escrita por ustedes!, y les Saldra

Atte: Member UnderNixerTeam


Título: Re: Inyeccion NotePad -Asm & OllyDBG-
Publicado por: MCKSys Argentina en 13 Octubre 2009, 02:35 am
Hola!

Lo que haz hecho, normalmente se conoce como "Inline Patching".

Utilizando este método, se puede crackear cualquier tipo de aplicación (siempre y cuando evites que el parche sea detectado, si es que el EXE lo detecta :))

Si pasas por la web de Ricardo, vas a encontrar muchos tutoriales al respecto:
Código:
www.ricardonarvaja.info

Saludos!




Título: Re: Inyeccion NotePad -Asm & OllyDBG-
Publicado por: karmany en 13 Octubre 2009, 10:51 am
Muchas gracias NoxOner por la colaboración.

He guardado tu tutorial. Puede resultar de mucha utilidad a gente que quiera aprender.

Un saludo
karmany


Título: Re: Inyeccion NotePad -Asm & OllyDBG-
Publicado por: Иōҳ en 13 Octubre 2009, 16:28 pm
Hola!

Lo que haz hecho, normalmente se conoce como "Inline Patching".

Utilizando este método, se puede crackear cualquier tipo de aplicación (siempre y cuando evites que el parche sea detectado, si es que el EXE lo detecta :))

Si pasas por la web de Ricardo, vas a encontrar muchos tutoriales al respecto:
Código:
www.ricardonarvaja.info

Saludos!




a no sabia que se llamaba asi xD ps lo paso a editar :D

uhm y como hago para el EXE no lo detecte?

los de ricardo narvaja creo q cualquiera que se a iniciado en este arte lo atenido que leer :D pero aun no llego a esa parte estoy en la leccion 18 Lento pero Seguro :D

a y solo me pueden llamar Nox mas facil xD


Título: Re: Inline Patching NotePad -Asm & OllyDBG-
Publicado por: MCKSys Argentina en 13 Octubre 2009, 19:24 pm
uhm y como hago para el EXE no lo detecte?

Pues, como te dije, SI es que el EXE lo detecta. Eso depende de cada ejecutable y el tipo de proteccion que implemente. Sólo basta con un simple CRC para que el programa se de cuenta de que ha sido modificado.

La forma mas sencilla de comprobar esto es ver el comportamiento del ejecutable antes y despues del parcheo. Si todo esta bien y funciona como es debido, es muy probable que no lo haya detectado.

En el caso del Notepad, no tiene chequeos (al parecer) por lo que el parcheo funcionará perfectamente.

Saludos!