delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
SetWindowHookEx不能HOOK命令行(cmd.exe) Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061203132155126.html
最近写了个API   HOOK的小软件  
  利用SetWindowHookEx   实现对所有进程的HOOK  
  但是发现   SetWindowHookEx   (WH_WH_GETMESSAGE)对cmd.exe   不起作用(平台WIN2003),后来我又试了   WH_CALLWNDPROCRET   ,WH_KEYBOARD   ,WH_MOUSE   ,都对cmd.exe不起作用     ,想请教下是否有别的方法进入cmd.exe的进程,利用CreateRemoteThread是可以注入cmd.exe的,但总不能用时钟来刷新进程列表,发现cmd.exe就注入吧,SetWindowHookEx本是我认为的最好的办法,但发现对cmd.exe不起作用,所以想请教下是否还有别的更好的办法,谢谢

是不支持的!  
  Hook   API,监控CreateProcess相关API,就不需要用时钟来刷新进程列表

感谢楼上的答复,我回去尝试下

看到你名字里的网址,才想起我还从你那下过东西呢  
  高手就是高手,在你面前总有“我怎么就没想到”的那种感觉  
  在《SetWindowHookEx不能HOOK命令行(cmd.exe)   》  
  您让我“监控CreateProcess相关API”  
  我回去尝试了下,效果是有的,但是在对cmd.exe的时候,好象还有点小问题  
   
  我先将我的尝试步骤说下:  
  1.我先   HOOK   CreateProcess   ,替换为一个同格式和参数的空函数,效果为不能运行任何新的进程,包括cmd.exe   说明   HOOK   CreateProcess   的做法是正确的,也达到了目的了  
  2.接着我写了个远程线程注入的函数,根据进程ID   来进程注入   测试成功  
  3.然后我又写了个   CreateProcess   的例子,函数的最后一个参数返回了创建的进程的ID   等信息  
   
  看来是完全可行的,于是我修改了APIHOOK的那个DLL,将CreateProcess   HOOK  
  替换CreateProcess的自定义函数里,我返回原函数的结果,让新的自定义的CreateProcess函数能达到原函数的效果,同时在后面加了   注入线程的函数,将原CreateProcess返回里最后个参数的返回的进程的ID   做为参数,理论上是能成功达到我的目的的,但是测试发现,别的进程都能成功注入,我测试了很多,包括VBS   脚本,但是   cmd.exe   依然没能注入,上面测试了   手工   注入cmd.exe是可行的   ,但为什么在以CreateProcess返回的进程ID为参数时,会出现cmd.exe   不能被注入,其他的都可以的,这让我百思不得其解,所以就给您发消息,希望能再次获得您的帮助   谢谢

posted on 2008-09-23 09:37 delphi2007 阅读(291) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。