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消息钩子勾住之后我就不会了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
广东轻亿云软件
2024-05-14 广告
2024-05-14 广告
广东轻亿云软件科技有限公司在软件开发领域深耕多年,积累了丰富的经验和技术实力。我们深知API接口在现代软件开发中的重要性,因此,我们与多家业界领先的API接口提供商保持着紧密的合作关系,确保我们的产品和服务能够充分利用这些接口,为用户提供更...
点击进入详情页
本回答由广东轻亿云软件提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询