Detours库APIHook演示抓取微信界面绘制文字函数

写在前面的话

演示环境VS2019+Windows10+微信win3.0.0.57+Detour

Detour库编译

项目地址:https://github.com/microsoft/Detours
在这里插入图片描述

代码直接git clone拉取下来,打开VS2019的开发环境配置
在这里插入图片描述

nmake /f makefile

在这里插入图片描述
在这里插入图片描述

配置VS2019

配置项目属性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
或者不用操作第三步
#pragma comment (lib,"detours.lib")
这样环境就算配置好了…
在这里插入图片描述

下面贴一下关键代码吧…

#include "pch.h"
#include "detours.h"

#pragma comment (lib,"detours.lib")

/*原函数指针*/
int ( __stdcall *pTextOutW)(_In_ HDC hdc, _In_ int x, _In_ int y, _In_reads_(c) LPCWSTR lpString, _In_ int c) = TextOutW;

/*hook函数*/
int __stdcall MyTextOutW(_In_ HDC hdc, _In_ int x, _In_ int y, _In_reads_(c) LPCWSTR lpString, _In_ int c)
{
	if (c)
	{
		printf("%S\n", lpString);
	}
	return pTextOutW(hdc, x, y, lpString, c);
}
/*开始hook*/
VOID StartHook()
{
	DetourTransactionBegin();
	DetourUpdateThread(GetCurrentThread());
	DetourAttach(&(PVOID&)pTextOutW, MyTextOutW);
	DetourTransactionCommit();
}

/*解除hook*/
VOID EndHook()
{
	DetourTransactionBegin();
	DetourUpdateThread(GetCurrentThread());
	DetourDetach(&(PVOID&)pTextOutW, MyTextOutW);
	DetourTransactionCommit();
}

效果如下:

在这里插入图片描述

完整代码:Github

最后的话

关于为什么hookTextOutW函数,调试一下就知道了…

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页