Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Inyección de API: ejemplo de CHackAll (https://www.clubdelphi.com/foros/showthread.php?t=62575)

alquimista 02-01-2009 19:09:27

Inyección de API: ejemplo de CHackAll
 
Buenas estoy intentando entender la inyeccion de la API CreateProcessInternalW de la web de CHackAll.

He creado la DLL y estoy probando el ejemplo creado en modo consola. Me funciona el ejemplo pero si ejecuto alguna aplicación desde fuera de la aplicacion.


Mis preguntas son : ¿Una vez ejecutado el programa se cambia la API para todos el Windows? o solo es valido desde dentro del programa ejemplo. Tenia en

No se si me he explicado bien...

escafandra 02-01-2009 19:29:38

De momento, aclararte que cada proceso carga una copia de las dll en memoria, incluidas las del S.O. De forma que si haces un Hook a una API sólo afectará al proceso donde te has inyectado.

Saludos.

alquimista 02-01-2009 19:40:21

Buenas... y feliz año a todos los del club..:)

¿Esto que dices es valido tambien para la kernel32.dll?
Creia que si se hacia hook al kernel todos los procesos utilizaban la misma copia.

Un saludo y gracias.

escafandra 02-01-2009 19:48:49

Cita:

Empezado por alquimista (Mensaje 332946)
¿Esto que dices es valido tambien para la kernel32.dll?
Creia que si se hacia hook al kernel todos los procesos utilizaban la misma copia.

Si es cierto, todos los procesos utilizan la misma copia de kernel32.dll, es decir de la librería. Cada proceso carga en su espacio de memoria "todas" las dll que necesita. Las librerías del S.O. se cargan siempre en los mismos offset, pero son "copias".

Saludos.

alquimista 02-01-2009 19:49:27

Perdon lo dejaste claro..
Cita:

De momento, aclararte que cada proceso carga una copia de las dll en memoria, incluidas las del S.O
Un saludo

escafandra 02-01-2009 23:20:54

Si, el Hook a la API tiene esas limitaciones, pero nada te impide inyectarte en mas procesos, al fin y al cabo si controlas la API CreateProcess....

Saludos.;)

alquimista 03-01-2009 00:02:29

Mi idea era anticiparme a la ejecucion de aplicaciones diferentes a una lista blanca y no ejecutarlas. Por aprender un poco sobre hooks e inyeccion. Y por ver si renovaba codigo. Por ahora hago una lista de procesos y los termino si no estan en la lista blanca.

Lo que pido se puede hacer con estos metodos??

¿Podeis explicarme aplicaciones practicas de estos metodos de inyeccion?

Gracias

Un saludo

escafandra 03-01-2009 01:56:41

Hacer lo que quieres mediante inyección de código, es una tarea compleja. Piensa que debes inyectar Explorer.exe y hacer un Hook a la API CreateProcess que a su vez inyecte tu código en todo proceso que se cree, para asi controlar procesos lanzados por otros porcesos...

Pero ¿Que pasa si el proceso es lanzado por el TaskManager?, pues si elTM fue abierto desde la barra de tareas, es decir Explorer.exe... Ya lo tienes controlado, pero si fué abierto con Ctrl+Alt+Sup, es decir Winlogon.exe....

No es facil Inyectar código en winlogon.exe aunque se puede hacer.

El proceso se vuelve un poco complejo, como ves, al menos así lo veo yo.

Entonces puedes optar por la solución que tienes, que supongo pasa por un timer y un listado de procesos abiertos, o por esta otra solución.

Para la mayoría de las aplicaciones que puedan abrirse en un PC por usuarios normales, con lo visto te basta. Claro que si no son usuarios normales y te ocultan los procesos....

Saludos.;)


La franja horaria es GMT +2. Ahora son las 08:18:27.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi