APIHook?

来源:百度知道 编辑:UC知道 时间:2024/05/30 08:59:35
我想hook CreateFileA
但是编译出错
typedef HANDLE (WINAPI *PFNCREATEFILEA)(LPCTSTR lpfn,DWORD DesiredAccess,LPSECURITY_ATTRIBUTES lpsa,DWORD dwCreateDisposition,DWORD dwFlagsAndAttributes,HANDLE hTempFile);

extern CAPIHook g_CreateFileA;

HANDLE Hook_CFA(LPCTSTR lpfn,DWORD DesiredAccess,LPSECURITY_ATTRIBUTES lpsa,DWORD dwCreateDisposition,DWORD dwFlagsAndAttributes,HANDLE hTempFile)
{
HANDLE hResult = ((PFNCREATEFILEA)(PROC) g_CreateFileA)(lpfn,DesiredAccess,lpsa,dwCreateDisposition,dwFlagsAndAttributes,hTempFile);
return hResult;
}

error LNK2001: unresolved external symbol "class CAPIHook g_CreateFileA" (?g_CreateFileA@@3VCAPIHook@@A)

怎么解决
说详细些..解决方法...

g_CreateFileA 没有定义,
你应该缺少一个例子了。

api hook 可以找 Windows核心编程 这本书来看一下 , 到我主页上找也有个例子,别人写的,不过还是Windows核心编程那个书中的比较方便,又容易理解

别用MFC 用DLL API

这是一个简单的键盘HOOK代码
HHOOK mainhook;
HANDLE MeDLLh;
/////////////////////////////////////////////////////////////////////
bool HookManage(int flag)
{
if(flag==1)
{
DWORD thh;
thh=GetCurrentThreadId();//得到当前线成的ID
mainhook=SetWindowsHookEx(WH_KEYBOARD,aKeyboardProc,(HINSTANCE)MeDLLh,thh);//thh为要挂接的线成队列ID 为0时挂接桌面窗口 桌面窗口是所有窗口的父窗口既挂接到所有的窗口 (HINSTANCE)MeDLLh 是你HOOK所在的资源句柄(.exe 或 .dll)
if(mainhook==NULL)
{
MessageBox(NULL,"HOOK安装失败","提示",MB_ICONWARNING|MB_OK);
}
else
MessageBox(NULL,"HOOK安装成功","提示",MB_ICONWARNING|MB_OK);
}
else if(flag==2)
{
if(UnhookWindowsHookEx(mainhook)!=0)
{
mainhook=NULL;
MessageBox(NULL,"HOOK卸载成功","提示&q