hook api

dfatfat 2010-11-13 08:06:41
如何用SetWindowsHookEx() 监视一个程序然后 关闭他呢 我在网上看了SetWindowsHookEx() 的使用方法可是一头雾水 请指教
如何全盘监视这个进程呢????
xiexie
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dfatfat 的回复:]
对不起打错了 是SetWindowsHookEx()
求解
[/Quote]
这个比较简单 你Timer轮玄进程列表,得到你想要的进程的句丙 就可以了.当染你先要调整令牌提升至debug权限,有权限去获取整个进程列表.如下代码:
BOOL EnableDebugPrivilege(BOOL fEnable) //调整令牌提升至debug权限
{
BOOL fOK = FALSE;

HANDLE nToken;

if (OpenProcess(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&nToken))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount = 1;
LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);

tp.Privileges[0].Attributes = fEnable?SE_PRIVILEGE_ENABLED:0;

AdjustTokenPrivileges(nToken,FALSE,&tp,sizeof(tp),NULL,NULL);

fOK = (GetLastError()==ERROR_SUCCESS);
CloseHandle(nToken);
}

return(fOK);
}
然后EnumProcessModules(
HANDLE hProcess,
HMODULE *lphModule,
DWORD cb,
LPDWORD lpcbNeeded
);

DWORD
WINAPI
GetModuleBaseNameA(
HANDLE hProcess,
HMODULE hModule,
LPSTR lpBaseName,
DWORD nSize
);
OpenProcess( PROCESS_ALL_ACCESS, FALSE, aProcesses[i]);
等函数的结合你就可以完成 进程的便利.
dfatfat 2010-11-13
  • 打赏
  • 举报
回复
对不起打错了 是SetWindowsHookEx()
求解
visualwind 2010-11-13
  • 打赏
  • 举报
回复
进程句柄不是用sewwindowshookex得到的
dfatfat 2010-11-13
  • 打赏
  • 举报
回复
teminateprocess 黑sewindowshookex是另一个程序
例如 打开notepad。exe 然后 打开 hook程序扫描进程有就关掉notepad 没有就sleep
m_tornado 2010-11-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dfatfat 的回复:]

我的意思是
打开一个程序然后sewwindowshookex得到这个程序的句柄然后再使用terminateprocess 关闭
[/Quote]

hook了之后terminateProcess的话,程序挂了,你还hook啥??
dfatfat 2010-11-13
  • 打赏
  • 举报
回复
我的意思是
打开一个程序然后sewwindowshookex得到这个程序的句柄然后再使用terminateprocess 关闭
visualwind 2010-11-13
  • 打赏
  • 举报
回复
关闭进程不需要用钩子。先Process32First/Process32Next列举进程,找到目标进程后直接TerminateProcess 具体可查MSDN

全盘监视进程的什么?SetWindowsHookEx就可以全盘监视进程的所有消息。
dfatfat 2010-11-13
  • 打赏
  • 举报
回复
没有人吗?
没恶意只是学习

15,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧