c++ HOOK API 拦截系统API函数
这个老问题一直没有真正的解决过,在网上找了上百个网站,浏览数百个文章,理论完全了解了,又代码的全部都测试了下,只有一篇文章的HOOK能用,但是是局部HOOK的,就是说完全...
这个老问题一直没有真正的解决过,在网上找了上百个网站,浏览数百个文章,理论完全了解了,又代码的全部都测试了下,只有一篇文章的HOOK能用,但是是局部HOOK的,就是说完全没用的垃圾
求全局HOOK函数,能HOOK住任意的函数,让执行这个函数的进程跳转为执行自己的函数,并且能控制进程正常执行原来的函数
int WINAPI 自己的MessageBoxA HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType )
{
if (true){
return 正常执行MessageBoxA函数
}
执行自己的代码
}
//
HHOOK g_hHook = NULL;
static LRESULT WINAPI GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
return ::CallNextHookEx(g_hHook, code, wParam, lParam);
}
int main(int argc, char* argv[])
{
g_hHook = SetWindowsHookEx WH_GETMESSAGE, GetMsgProc, ModuleFromAddress(GetMsgProc), GetCurrentThreadId());
}
能成功执行并全局HOOK住绝对给100分
不先上分是为了不浪费分,不然问题没解决分还是被扣了就不值了
或者发附件到我的邮箱,1277260932@qq.com,并且在邮件正文写上你的百度ID,在回答中写上“已发+你的百度ID”,能用绝对给100分
我自己查资料解决了 展开
求全局HOOK函数,能HOOK住任意的函数,让执行这个函数的进程跳转为执行自己的函数,并且能控制进程正常执行原来的函数
int WINAPI 自己的MessageBoxA HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType )
{
if (true){
return 正常执行MessageBoxA函数
}
执行自己的代码
}
//
HHOOK g_hHook = NULL;
static LRESULT WINAPI GetMsgProc(int code, WPARAM wParam, LPARAM lParam)
{
return ::CallNextHookEx(g_hHook, code, wParam, lParam);
}
int main(int argc, char* argv[])
{
g_hHook = SetWindowsHookEx WH_GETMESSAGE, GetMsgProc, ModuleFromAddress(GetMsgProc), GetCurrentThreadId());
}
能成功执行并全局HOOK住绝对给100分
不先上分是为了不浪费分,不然问题没解决分还是被扣了就不值了
或者发附件到我的邮箱,1277260932@qq.com,并且在邮件正文写上你的百度ID,在回答中写上“已发+你的百度ID”,能用绝对给100分
我自己查资料解决了 展开
2个回答
展开全部
楼主号称理论完全了解了,我看,其实不然吧。
HOOK有N多种。
按照使用级别来说,可大致分为应用层钩子和内核钩子;
按照钩子实现的方式来说,又可以分为消息钩子、进程钩子、SSDT、ShadowSSDT、ITA、Object钩子、系统中断等。
从你上面代码看,你似乎要挂钩进程中的Windows API函数 MessageBoxA,还要挂钩一个WH_GETMESSAGE消息钩子,并且在控制台程序用执行,太杂乱了,这让人无法明白你到底要做出什么样的效果。
在这种情况下,直接让人给你代码,恐怕给你了也不晓得该怎么用。对了,忘记说了,按照有效范围来说,可分为局部钩子、全局钩子,其中全局钩子必须要放到独立的DLL中的。
纯手打,祝楼主天天向上。
HOOK有N多种。
按照使用级别来说,可大致分为应用层钩子和内核钩子;
按照钩子实现的方式来说,又可以分为消息钩子、进程钩子、SSDT、ShadowSSDT、ITA、Object钩子、系统中断等。
从你上面代码看,你似乎要挂钩进程中的Windows API函数 MessageBoxA,还要挂钩一个WH_GETMESSAGE消息钩子,并且在控制台程序用执行,太杂乱了,这让人无法明白你到底要做出什么样的效果。
在这种情况下,直接让人给你代码,恐怕给你了也不晓得该怎么用。对了,忘记说了,按照有效范围来说,可分为局部钩子、全局钩子,其中全局钩子必须要放到独立的DLL中的。
纯手打,祝楼主天天向上。
追问
全局钩子,能拦截其他进程对Windows API的调用,dll,WH_GETMESSAGE消息钩子勾住之后我就不会了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询