FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Hola callbacking. He hecho la prueba que comentabas en tu anterior post, pero inyectando dll. He realizado un Hook a las APIs DrawTextA y DrawTextW. La inyección la he hecho en el notepad, como en tu ejemplo y también en el explorer. No he tenido problemas en capturar el texto o cambiarlo.
El problema mas común al hacer un Hook a una API suele ser la corrupción de la pila, no cuando un programa llama directamente a esa API, sino cuando la llamada se realiza desde otra API. Es fácil darse cuenta si el Hook lo hacemos en ASM y hacemos un debug. En el último ret nos vamos de bareta pues la pila se corrompió. Los experimentos los he realizado en C y básicamente el sistema ha sido asi: Código:
// Definición del tipo Puntero a la función API que vamos a Hookear. typedef INT (__stdcall *PDrawTextW)(HDC hDC, LPCWSTR lpWStr, INT nCount, LPRECT lpRect, UINT uFormat); // Declaración de un tpunero de ese tipo. PDrawTextW Ini_DrawTextW = 0; //............ // Preparación del Hook // Sustitución de los 5 primeros Bytes de DrawText por JMP HookDrawText // Ini_DrawText es un puntero a una función con la copia de los Bytes sustituidos de la API original seguido de JMP al 6º Byte de esa API. Para esto se reserva espacio de 10 Bytes mínimo. //........... // Función Hookeada: // Fundamental que sea __stdcall para no corroper la pila.... INT __stdcall HookDrawText(HDC hDC, LPCWSTR lpWStr, INT nCount, LPRECT lpRect, UINT uFormat) { ...... ...... // Lamada a la API original. En este punto podemos volver a tomar el control antes de retornar. return Ini_DrawTextW(hDC, lpWStr, nCount, lpRect, uFormat); } El tema es engorroso Saludos. |
#2
|
|||
|
|||
Que buena explicación de este tema para avanzar mas gracias
|
#3
|
|||
|
|||
Y al final ?
Bueno, al final me quede sin saber como Inyectar código. Nunca se termino el hilo.
|
#4
|
||||
|
||||
El hilo quedó incompleto. si tienes interés en estos temas, puedes encontrar información aquí:
Inyección directa de código en C y en delphi Inyección directa de código II HOOK a la API en delphi y en C HOOK a la API64 API UnHooker deshaciendo un Hook a la API tipo trampolín ¿Protegernos contra inyecciones dll? Shellcode en C compatible con distintas inyecciones Encriptando funciones hasta conseguir un shellcode en delphi Seguro que me dejo cosas en el tintero Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Thread y servidor DCOM externo al proceso ( EXE ) | Aldo | OOP | 1 | 15-09-2006 17:39:47 |
Como utilizar un componente externo? | Sergei | OOP | 2 | 24-01-2006 19:12:24 |
Inyectar proceso | conde | API de Windows | 4 | 10-09-2005 15:52:17 |
Como se puede programar directamente??? | Antuan | Varios | 10 | 04-08-2005 08:04:38 |
Como correr un archivo externo? | fayala | Firebird e Interbase | 3 | 07-04-2005 03:56:00 |
|