阅读:2825回复:5
Hook ZwCreateProcess的问题,急死了
我在2000下,已经成功拦截到了ZwCreateProcess
但是我打印出文件名却蓝屏,为什么啊? 在xp下,我也成功的拦截到了ZwCreateProcessEx,并且取出了文件名。但方法有点区别 NTSTATUS HookZwCreateProcess(OUT PHANDLE ProcessHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN HANDLE ParentProcess, IN BOOLEAN InheritObjectTable, IN HANDLE SectionHandle OPTIONAL, IN HANDLE DebugPort OPTIONAL, IN HANDLE ExceptionPort OPTIONAL ) { NTSTATUS ret = STATUS_TIMEOUT ; ANSI_STRING ansiFileName; RtlUnicodeStringToAnsiString (&ansiFileName, ObjectAttributes->ObjectName , TRUE); RtlUpperString(&ansiFileName,&ansiFileName); DbgPrint (\"Create Process %s\\n\", ansiFileName.Buffer + 4); ..... ... .... } |
|
最新喜欢:![]() |
沙发#
发布于:2004-05-24 09:58
听说可用 ZwCreateSection 获得,还没试过。
|
|
|
板凳#
发布于:2004-05-21 13:57
名字可以通过 NtCreateFile 得到,但这样在其它很多情况下都会 Hook 到。
|
|
|
地板#
发布于:2004-04-08 23:45
不好意思,想请问一下
你最后有成功的找到该process的name吗..?? 我希望在一个程序被执行的时候可以hook到 然后用 它的名字来比对是不是我要的那个程序被执行了 如 notepad.exe 这样来看. 谢谢!! |
|
地下室#
发布于:2002-10-19 11:44
呵呵!蓝屏很有可能是因为你的以下部分出问题了 呵呵。是ObjectAttributes=NULL; |
|
|
5楼#
发布于:2002-10-13 00:02
呵呵!蓝屏很有可能是因为你的以下部分出问题了
RtlUnicodeStringToAnsiString (&ansiFileName, ObjectAttributes->ObjectName , TRUE); RtlUpperString(&ansiFileName,&ansiFileName); DbgPrint (\"Create Process %s\\n\", ansiFileName.Buffer + 4); ObjectAttributes->ObjectName 你有没有考虑过为NULL的情况啊? |
|