使用detours注入DLL和单纯使用SetWindowsHookEx建立钩子有什么区别?

WQ771211 2010-03-19 10:37:20
感觉直接用SetWindowsHookEx也可以实现改变函数执行方向,为什么还要自己编写一个新的函数注入DLL中呢???

DETOUR_TRAMPOLINE( BOOL WINAPI Real_CreateProcessW( LPCWSTR a0, LPWSTR a1,LPSECURITY_ATTRIBUTES a2,
LPSECURITY_ATTRIBUTES a3,BOOL a4,DWORD a5,
LPVOID a6,LPCWSTR a7,LPSTARTUPINFOW a8,
LPPROCESS_INFORMATION a9),CreateProcessW);
BOOL WINAPI Mine_CreateProcessW( LPCWSTR a0, LPWSTR a1,LPSECURITY_ATTRIBUTES a2,
LPSECURITY_ATTRIBUTES a3,BOOL a4,DWORD a5,
LPVOID a6,LPCWSTR a7,LPSTARTUPINFOW a8,
LPPROCESS_INFORMATION a9)

如上面:编写了Mine_CreateProcessW替换CreateProcessW
...全文
544 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SiGoYi 2010-03-19
  • 打赏
  • 举报
回复
把DLL注入到其它进程再做SetWindowsHook是为了监视其它进程
WQ771211 2010-03-19
  • 打赏
  • 举报
回复
如果我只想拦截一个指定进程的信息,如拦截send和recv,不做成DLL,不用detours,不知道行不?

"SetWindowsHookEx()函数的最后一个参数决定了此钩子是系统钩子还是线程钩子。"

如果一个进程开了多个线程,可能还是有问题。
bingying19872008 2010-03-19
  • 打赏
  • 举报
回复
detours 好像也没法拦截非API非导出函数吧...
bilaopao 2010-03-19
  • 打赏
  • 举报
回复
钩子起到拦截并做相关操作的作用。

detours是直接挂载API

SetWindowsHookEx注入指定进程怎么不好做?
辰岡墨竹 2010-03-19
  • 打赏
  • 举报
回复
Detours可以自己选择只注入到某个特定的进程。而SetWindowsHookEx()不好这样做。
WQ771211 2010-03-19
  • 打赏
  • 举报
回复
http://baike.baidu.com/view/1208620.htm 里面说到:

  4、系统钩子与线程钩子:
  SetWindowsHookEx()函数的最后一个参数决定了此钩子是系统钩子还是线程钩子。
  线程勾子用于监视指定线程的事件消息。线程勾子一般在当前线程或者当前线程派生的线程内。
  系统勾子监视系统中的所有线程的事件消息。因为系统勾子会影响系统中所有的应用程序,所以勾子函数必须放在独立的动态链接库(DLL) 中。系统自动将包含"钩子回调函数"的DLL映射到受钩子函数影响的所有进程的地址空间中,即将这个DLL注入了那些进程。

15,471

社区成员

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

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