Red de conocimiento del abogados - Ley de patentes - Cómo conectar la copia de archivos para implementar la interceptación de datos

Cómo conectar la copia de archivos para implementar la interceptación de datos

Primero, permítanme presentarles brevemente el principio a aquellos que no entienden los ganchos: el llamado gancho se refiere a un gancho. El enlace interceptará la información de la aplicación antes de que la aplicación reciba el mensaje. Por ejemplo, el enlace del mouse y el teclado interceptará la información del mouse y del teclado de una aplicación. ¿Quieres ser un caballo de Troya? Utilice el enlace de tipo WH_KEYBOARD

1. Necesitamos utilizar enlaces en todos los procesos y escribir la función de enlace en el archivo DLL. Esto está claramente estipulado por Microsoft. Hay otros métodos, que no se describirán aquí.

2. Configure el enlace en el archivo DLL.

Aquí debe llamar al ID del hilo, threadId, que usaremos. escriba la persona que llama de la DLL a continuación Ingrese

hhookGetMsg=::SetWindowsHookEx(WH_GETMESSAGE,GetMessageHookProc,::GetModuleHandle(TEXT("dll.dll")),threadId);

//Parámetro 1: Tipo de gancho

//Parámetro 2: Función de procesamiento del gancho

//Parámetro 3: El módulo donde se encuentra el gancho

/ /Parámetro 4: ID del hilo que será interceptado por el gancho, si Para establecer un gancho global, proporcione 0 aquí.

Escriba esta función SetWindowsHookEx() en una función exportada para permitir que el programa que llama al archivo dll llame

_declspec(dllexport) void SetHook(DWORD threadId)

{

hhookGetMsg=::SetWindowsHookEx(WH_GETMESSAGE,GetMessageHookProc,::GetModuleHandle(TEXT("dll.dll")),threadId);

}

SetHook() es la función exportada de este dll

3. Escriba la función en la función de procesamiento del gancho. Cuando el gancho intercepte el mensaje WM_NULL, inyecte el archivo DLL. Dado que el mensaje WM_NULL es un mensaje inútil, la aplicación generalmente no recibirá este mensaje a menos que lo enviemos nosotros mismos, por lo que cuando inyectamos la DLL, solo necesitamos enviar un mensaje WM_NULL a la aplicación para que se inyecte Cuando el gancho Cuando. WM_NULL es interceptado, simplemente inyecta el gancho y listo.

LALLADA DE RESULTADO GetMessageHookProc(int nCode,WPARAM wParam,LPARAM lParam)

{

MSG* pMsg=(MSG*)lParam;

if(WM_NULL==pMsg->mensaje)

::LoadLibraryW(TEXT("D://MyDLL.dll"));

}

Bien, compila el proyecto DLL y genera el archivo DLL.

4. Escriba a la persona que llama y llame al gancho

Primero obtenga el identificador de la ventana

HWND FindWindow( LPCTSTR lpClassName,

LPCTSTR lpWindowName

p>

);

Devuelve el identificador del formulario. hWnd.

hWnd=FindWindow(0, el nombre del formulario en el que se va a inyectar el dll (por ejemplo: Qianqianjingting))

Utilice hWnd para encontrar el ID del hilo del formulario

threadId=GetWindowThreadProcessId(hWnd,0);

Bien, tenemos el ID del hilo y podemos llamar al gancho.

SetHook(threadId);

En este momento, el gancho se ha cargado en el hilo de destino.

Enviar mensaje WM_NULL al formulario de destino

SendMessage(hWnd,WM_NULL,0,0);

El gancho recibirá WM_NULL antes de que el formulario de destino reciba el información del mensaje. Debido al juicio realizado en la función de procesamiento de enlace, al recibir el mensaje WM_NULL, se carga el archivo DLL. Entonces, el archivo DLL se inyecta en el hilo de destino.