FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Muy bueno el ejemplo rounin
|
#2
|
||||
|
||||
Hola,
Coincido con seoane; curioso ejemplo rounin. |
#3
|
|||
|
|||
gracias
El ejemplo esta de maravillas, pero yo pensaba que todo lo que se ejecutaba en la maquina pasaba por el API Createprocess, y por lo tanto podía controlarlo todo desde allí. Me paso lo siguiente, por ejemplo tengo un listado (md5) de aplicaciones que no quiero que se ejecuten en mi maquina, pero por ejemplo pueden hacer un software en delphi.
Y así, ni se entera el programa que se ejecuto esta aplicación, es que tengo que hacerle algún cambio al código o es otra API la que tengo que hacerle el hook. Por adelantado muchas gracias. Última edición por l30 fecha: 08-07-2007 a las 22:35:28. |
#4
|
|||
|
|||
Parece que WinExec esta realizado sin CreateProcess.
Puede ser llama NtCreateProcessEx? No lo se... |
#6
|
||||
|
||||
super!
En realidad l30, concuerdo con seoane y dec; este ejemplo esta muy bueno... un saludo al autor ¿? !!!
Te explico de la forma más digerible lo que hace para lo utilices; Todos los procesos tienen una copia en su contexto de las librerías que utiliza, por tal motivo la solución del hilo que iniciaste esta dada por el reemplazo de la API CreateProcess en todos los procesos habidos y por haber. El autor del anterior ejemplo se valió ingeniosamente de la API SetWindowsHookEx para cargarse en todos los procesos que manejen mensajes, de ésta forma casi todos los procesos cargan indirectamente dicha librería... cargada la librería, reemplaza los 32 bits que apuntan a la llamada de la API CreateProcess para parámetros ansi y unicode. Este es el motivo por el que cuando uno corre una consola (cmd.exe), y en ésta ejecuta el chkdsk, no aparece en la aplicación de prueba, la misma eventualidad es apreciable cuando uno crea una aplicación en Delphi que no procesa mensajes. y bueno como la implementas? sencillo, en la unidad HookCrPr.pas, añade tu línea de comprobación de hash antes de procesar las antiguas APIs por ejemplo:
// Espero que el autor esté de acuerdo con la modificación de su unidad. Para que dicha librería funcione en los casos excepcionales comentados anteriormente aconsejo modifiques el tipo de hook en Hook.dpr (WH_MOUSE por ejemplo), pero no creo que sea la solución más efectiva para incluir dichos casos. Personalmente lo que yo haría es listar todos los procesos eventualmente como te mostre en tu anterior hilo, y reemplazar la entrada de llamada de la API en cada uno de éstos al ser necesario, mejor aún; dicho reemplazo solo debe hacerse la primera vez, luego al correr un proceso (puesto que "tu" lo corres), debes reemplazarlas entradas del nuevo procesos creado. TODOS las llamadas de creacion de procesos (CreateProcess, WinExec y ShellExecute*) llaman en algún momento a la API CreateProcessInternal; GüinDOS trabaja internamente con unicode así que la API que debes reemplazar es la CreateProcessInternalW. ShellExecute llama a una serie de funciones para dar soporte a la función en si, la funcion en la que me quedé en el proceso de debugging es la ShellExecuteExW, sin embargo puedo asegurar que acaba en las "manos" de CreateProcessInternalW. PD: Claro que llevando el proceso de debugging más a fondo podríamos obtener algo como ésto: ntdll.dll!_ZwCreateProcessEx@36() kernel32.dll!CreateProcessInternalW() advapi32.dll!CreateProcessAsUserW() wlnotify.dll!ProcessExecRequest() wlnotify.dll!ExecServerThread() kernel32.dll!BaseThreadStart() y pasar por NtCreateProcessEx, pero mientras más nos acercamos al kernel aumentamos el riesgo de nuestra aplicacion, y necesitamos un conocimiento de "bajo nivel" no muy bien documentado. Revisa ésto; tambien en otros foros comentan que la API que debemos reemplazar es NtCreateProcessEx, pero eso ya lo dejo a tu propio análisis. Suerte! |
#7
|
|||
|
|||
gracias
Muchas gracias cHackAll y a rounine aprendido mucho con ustedes, voy a ver porque me esta dando error esta parte del codigo
Me dice que la funcion Allowed no esta definida, voy a revisar a ver que tengo mal. De nuevo muchas gracias. No e podido ver los link que me diste porque tengo problemas con la Internet, solo puedo ver algunas paginas mi proveedor de Internet no me a dado respuesta bueno como es gratis se da todo el lujo de hacerme esperar jejejjeje. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problemilla con Hook | ixMike | API de Windows | 1 | 11-08-2006 01:48:19 |
Hook de Teclado + DLL | FeLiXxUcO | C++ Builder | 12 | 12-02-2006 19:59:53 |
Hook global | pepelaalfa | API de Windows | 2 | 08-12-2005 18:24:27 |
Hook Roman Con ECO ECO ECO!! | marceloalegre | Varios | 3 | 03-11-2005 15:43:41 |
Hook de teclado! | marceloalegre | Varios | 2 | 17-10-2005 00:59:47 |
|