#include<Windows.h>
#include <stdio.h>
BOOL SetHook(HMODULE hMod);
void ProcessNameList(HMODULE hMod);
typedef int(WINAPI* NewMessageBox)(HWND, LPCSTR, LPCSTR, UINT);
PROC g_proc = (PROC)MessageBoxA; //取messagebox的名称
void main()
{
ProcessNameList(GetModuleHandle(NULL));
MessageBox(NULL, "原函数", "09HookDemo", 0);
SetHook(::GetModuleHandle(NULL));
MessageBox(NULL, "原函数", "09HookDemo", 0);
system("pause");
}
int WINAPI myMessageBox(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT nType)
{
return ((NewMessageBox)(g_proc))(hWnd, "新函数", lpCaption, nType);
}
BOOL SetHook(HMODULE hMod)
{
IMAGE_DOS_HEADER *pDosHeader = (IMAGE_DOS_HEADER*)hMod;
IMAGE_OPTIONAL_HEADER *pOptHeader = (IMAGE_OPTIONAL_HEADER*)((BYTE*)hMod + pDosHeader->e_lfanew + 24);
IMAGE_IMPORT_DESCRIPTOR *pImportDesc = (IMAGE_IMPORT_DESCRIPTOR*)((BYTE*)hMod + pOptHeader-&g
SetHook ,修改dll中的api函数
本文深入探讨了DLL Hook技术,通过SetHook函数实现对目标DLL中特定API函数的替换,讲解了如何在运行时动态监控和修改程序的行为。内容包括钩子的原理、SetHook的实现细节以及应用场景。
摘要由CSDN通过智能技术生成