FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error ejecutando una rutina inyectada a un proceso remoto
Hola,
Estoy teniendo problemas al ejecutar una rutina inyectada en un proceso remoto. Funcionalmente, la rutina se ejecuta perfectamente; pero, bien al momento de regresar, o al momento de limpiarse la memoria alocada para ella, el proceso remoto indica que ha generado errores y que se cerrará. Dado que este es un tipo de programación particularmente complicada, por simplicidad diré que conceptualmente, y en forma muy resumida, la situación es la siguiente: 1. Tenemos desarrollada una rutina que debe ejecutarse en una aplicación distinta a aquella en la que la hemos escrito. 2, Para ello es necesario copiar, el código de la rutina en sí y la estructura de los datos a pasarle como parámetros, desde nuestro espacio de direcciones al espacio de direcciones del proceso remoto, lo que implica reservar memoria en el proceso remoto para copiarle esa información 3. La rutina debe ejcutarse con CreateRemoteThread 4. La memoria reservada en el proceso remoto debe liberarse con VirtualFreeEx. VirtualFreeEx no reporta errores, por lo que aparentemente esa parte está bien; pero no estoy 100% seguro Básicamente, la rutina a ejecutarse remotamente debe tener la forma: function NombreDeFuncion(dwEntryPoint: Pointer): longword; stdcall; El parámetro dwEntryPoint debe ser un apuntador a la estructura de datos pasados a la rutina desde el proceso que llama, y entre otras cosas contiene apuntadores a las rutinas de User32 y Kernel32 que pudieran necesitarse. Cuando la rutina termina es donde empiezan mis principales dudas. He visto ejemplos donde no se hace nada especial, otros donde se llama a ExitThread y otros llamando a ExitProcess: pero ninguna combinación ha funcionado. Además, ni para ExitThread ni para ExitProcess he encontrado una explicación clara de cual debe ser el valor de ExitCode que se les pase. Agradecería si alguién pudiera aclarar conceptualmente las condiciones que deben cumplir ese tipo de rutinas para ser terminadas y para limpiar la memoria alocada para ellas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
ayuda ejecutando un proceso como "SYSTEM" y haciendo que no se pueda terminar | lostprophets | Varios | 2 | 05-02-2008 02:28:50 |
ayuda "Detectando un proceso y ejecutando otro" | lostprophets | Varios | 1 | 29-01-2008 23:54:03 |
Error de conexion a servidor Remoto con Firebird | Gaim2205 | Firebird e Interbase | 5 | 18-09-2007 21:33:00 |
Error al conectar la base de datos en modo Remoto | oscjae | Firebird e Interbase | 2 | 26-01-2006 11:19:33 |
Error de memoria con proceso de Data Pump | burasu | Conexión con bases de datos | 4 | 22-11-2005 11:14:22 |
|