• 工作需要,想控制进程的创建,于是HOOK了ZwCreateProcess,后来发现xp和2003中创建进程的都用NtCreateProcessEx。但是ZwCreateProcessEx未被ntoskrnl.exe导出...
  • 这篇文档涉及到Windows NT下隐藏对象、文件、服务、进程等相关技术。而基于隐藏对象的方法,本文所采用的是Hook函数。隐藏对象意味着改变系统函数的返回内容(HOOK API),使它们将忽略对象的标识符。
        最基本的方法(除去少数不同的)是我们让系统函数的入口变为我们的函数,然后在里面处理,如果是不需隐藏的对象就还给系统函数,否则就直接跳出……
  • 在系统内核级中,MS的很多信息都没公开,包括函数的参数数目,每个参数的类型等。在系统内核中,访问了大量的寄存器,而很多寄存器的值,是上层调用者提供的。如果值改变系统就会变得不稳定。很可能出现不可想象的后果。另外有时候对需要Hook的函数的参数不了解,所以不能随便就去改变它的堆栈,如果不小心也有可能导致蓝屏。所以Hook的最佳原则是在自己的Hook函数中呼叫原函数的时候,所有的寄存器值,堆栈里面的值和Hook前的信息一样。这样就能保证在原函数中不会出错。一般我们自己的Hook的函数都是写在C文件里面的。例如Hook的目标函数KiReadyThread...
  • 这篇文章是有关在OS Windows下挂钩API函数的方法。所有例子都在基于NT技术的Windows版本NT 4.0及以上有效(Windows NT 4.0, Windows 2000, Windows XP)。可能在其它Windows系统也会有效。
        你应该比较熟悉Windows下的进程、汇编器、PE文件结构和一些API函数,才能明白这篇文章里的内容...