2010-08-12 9 views
5

Estoy tratando de conectar las llamadas al método ExtTextOut y DrawTextExt GDI de otra aplicación.Cómo conectar llamadas de API en otra aplicación

Sé que necesito usar GetProcAddress para encontrar la dirección de esos métodos en gdi32.dll, y sobrescribir la dirección en el proceso que quiero enlazar con la dirección de mi función. Luego, en mi función, hago lo que necesito y luego llamo a la función original.

Quiero hacer que esta funcionalidad de gancho esté disponible para las aplicaciones .net, y aparentemente esto se puede hacer mediante la creación de un dll no administrado 'intermedio' que enganche, y es capaz de activar un evento en el lado .net, para que la nueva función pueda apostar escrita en el entorno administrado. Simplemente no estoy seguro de cómo implementar esto. ¿Alguien tiene muestras de código o enlaces a la información?

Respuesta

5

Recomendaría Desvíos de Microsoft (C++ x86 solamente) o EasyHook (C++ & C#, x86/x64).

http://easyhook.codeplex.com/

lo he usado antes, funciona bastante bien. Debe pasar una función o dirección y hacia dónde desea que se redireccione, y puede tener todas las llamadas (para todos los procesos o una específica) enviadas a su función. Los tutoriales cubren la mayoría de los conceptos básicos, pero puedo editar el código en esta respuesta si lo desea.

Un poco trivial es que también funciona de otra manera. Pase un puntero a su función y puede redirigir las llamadas al código externo. Hace una integración interesante con aplicaciones antiguas o de código cerrado.

+0

FWIW la versión pro de Detours es compatible con ia/x64 –

+0

EasyHook suena mejor para mí, ya que es completamente funcional (puede hacer 64 bits) de forma gratuita ... ¿Hay algún tipo de tutorial disponible para obtener una muestra pequeña? No vi nada en la sección de documentación. – Jeremy

+0

Está oculto en la página de descargas: http://easyhook.codeplex.com/releases/view/24401 Docs API administrados, Tutorial e Introducción. No son los mejores tutoriales, pero deberían ser suficientes para comenzar. :) – ssube

4

Puede usar Deviare API Hook, use DeviareCSharpConsole que es una herramienta que se encuentra en el paquete que le permite conectar cualquier API y ver los valores de los parámetros en un control tipo treeview. El único truco que necesita en Windows 7 es cargar como administrador, informé.

+0

Muy bueno. Gratis también – Jeremy

Cuestiones relacionadas