进程间通信——自定义消息方式实现(SetWindowsHookEx)

本文介绍如何通过SetWindowsHookEx创建DLL并在目标进程中安装HOOK,结合SendMessage实现进程间通信。DLL定义了安装、卸载钩子及自定义消息处理函数,消息发送程序负责设置全局钩子并发送自定义消息,目标进程接收到消息后由MessageHookProc处理,成功实现了通信并可观察到DLL已注入目标进程。
摘要由CSDN通过智能技术生成

本文演示如何使用自定义消息来实现进程间通信。
原理:使用SetWindowsHookEx给目标进程添加一段HOOK程序,用来处理自定义消息,然后用SendMessage向目标进程发送自定义消息,从而实现进程间通信。

项目分为两部分:设置HOOK的DLL和消息发送程序。

DLL

定义3个函数,分别用于安装钩子,卸载钩子和自定义消息处理函数。其中前两个函数是导出函数,由消息发送程序调用。
代码如下:

// dllmain.cpp : 定义 DLL 应用程序的入口点。
#define _CRT_SECURE_NO_WARNINGS
#include "framework.h"
#include <stdio.h>

HHOOK g_HookProc;
extern "C" void __declspec(dllexport) SetHook(); // 安装HOOK
extern "C" void __declspec(dllexport) UnHook(); // 卸载HOOK
LRESULT CALLBACK MessageHookProc(int nCode, WPARAM wParam, LPARAM lParam); //消息处理函数

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
   
    switch (ul_reason_for_call)
    {
   
    case DLL_PROCESS_ATTACH:
    case DLL_
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值