Asumo si usted está conectando un archivo DLL que se está conectando las exportaciones de esa DLL?
En ese caso, se puede realizar una sencilla IAT (y potencialmente comer si es necesario) gancho. La ventaja de los ganchos IAT/EAT sobre Detours es que la aplicación y la eliminación de los ganchos es 100% segura (ya que no está reemplazando el código, está reemplazando un puntero, por lo que no hay posibilidad de una carrera). condición), y es fácil hacer los enganches en procesos x64 nativos también (que la biblioteca Detours de Microsoft no puede hacer a menos que desembolses 10 mil para la edición Prof).
Sí, hay bibliotecas de desvío de terceros que tienen soporte x64 y se ocupan de la mayoría de las condiciones de carrera y otras, pero algunas son realmente caras y otras son simplemente un dolor para trabajar.
Los ganchos IAT/EAT son rápidos y fáciles, y hay un código de muestra para realizarlos disponibles en el libro "Windows a través de C/C++" (junto con una multitud de lugares en las interwebs).
Esta es una respuesta bastante genérica que sé, pero es difícil entrar en más detalle sin más información sobre lo que está tratando de hacer exactamente.
¿Está intentando conectar una DLL dentro de su propio proceso, o una DLL que se ha cargado en otro proceso? –
las estrategias disponibles para enganchar todas las funciones que se utilizan en un dll son diferentes de las estrategias para enganchar solo una de las funciones utilizadas. Las estrategias fuera de proceso son diferentes de las estrategias en proceso. ¿Podría darnos más detalles? –
sí, intentando conectar un dll de otro proceso. algo similar, por ejemplo, sería como enganchar el archivo opengl32.dll e interceptar glBegin..glEnd y etc ... – enuree