怎么样使api Hook拦截到cmd命令行的动作。(50分)

  • 主题发起人 主题发起人 hzm7512
  • 开始时间 开始时间
H

hzm7512

Unregistered / Unconfirmed
GUEST, unregistred user!
一个关于api Hook的问题,我用api hook拦截ShellExecuteW和CreateprocessW,正常的情况下(通过双击鼠标)是可以的获得文件名和进程名这些数据的,但是在cmd命令行(在cmd命令行里输入一个文件的地址)打开的文件,Hookapi就拦截不到。不知道如何解决。
 
你是在msdos下输入cmd不能拦截到吗?
 
我可能没有说明白:我想做一个文件访问的日志,记录我的机子上所有打开过的文件和进程,在正常操作下(非dos命令)是可以拦截我想要的数据,但是打开cmd的界面,然后输入文件的路径,此时文件已被打开,但是api hook拦截不到打开文件的动作,和创建进程的动作,要怎么样才能解决。
 
在dos下的cmd不是shell,所以你还要hook相应的函数,你可以查下dos的cmd是否调用了windows api函数,如果是,则hook他,如果不是,我就不知道了
 
ShellExecuteW和CreateprocessW?那ShellExecuteA, CreateProcessA, ShellExecuteExW, ShellExecuteExA, CreateProcessExW, CreateProcessExW, WinExecA, WinExecW呢?都拦截了?
 
CMD类似是一个虚拟机,HOOK不可能拦截CMD内处理的结果,但可以拦截输入结果。

如果实在要拦截,只能从内存分配的角度考虑,这样做的话就有点麻烦了。也不是HOOK的用意所在了。
 
to djsyz
你能讲讲具体怎么做吗?
 
to zqw0117:我都把这些函数拦截了,在cmd下也是不行的。
to andd_chen:Dos下不是调用windows api,所以我知道Hook api是不行的。
to djsyz:具体要怎么做呢?能不能告诉一个解决的思路呢?
 
CMD下是用CreateProcess相关API启动程序的,拦截就可以了,如果是CMD内部命令就不可以了
 
试过拦截NtVdmControl吗?hackdef1000拦截此函数屏蔽cmd下对特定目录的读取,所以应该可以满足你的要求
 
to wangsea
NtVdmControl这个函数有吗?我怎么在msdn里没找到啊
 
Google搜索 "NtVdmControl",有很多,例如:
http://www.nsfocus.net/index.php?act=sec_doc&do=view&doc_id=896&keyword=

用PE工具看导入表,有"ZwVdmControl",所以也一定有"NtVdmControl",拦载ZwVdmControl与
NtVdmControl是一样的.
 
我上一段时间写一个安全扫描.类似病毒防火墙的咚咚.用驱动的方式写的Rootkit拦截内核的ZwCreateProcess/ZwCreateProcessEx.在系统启动之前就加载就可以拦截得到全部的进程创建.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部