阅读:1629回复:1
SSDT分配表(的疑问,请大虾们指正)
关于概念的理解,我不知道。我理解是否正确,想大虾们,指正一下,我理解有错的一定多多指出,概念迷糊的地方也详加解释一下。
谢谢大虾 我理解的是: (我不懂汇编)他们在汇编模式下调试,mov eax,7ah他们说这个数值称为系统的服务号,因为我不懂汇编,我理解的系统服务号, #define SYSTEMSERVICE(_function) KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_function+1)] 是不是就是(PUCHAR)_function+1地址值中的内容? 而ServiceTableBase()函数返回的是内核模式下 如ZwQueryDirectoryFile 调用的的真实地址? 如果理解有错,请大虾们指正. 小弟初学驱动设计,由于小弟比较喜欢安全方面的东西,看了一个,网上隐藏文件的RootKit 他最核心的就是 OldZwQueryDirectoryFile = (ZWQUERYDIRECTORYFILE)SYSTEMSERVICE(ZwQueryDirectoryFile);//把真正ZwQueryDirectoryFile函数地址赋值给一个函数指针保存起来 (ZWQUERYDIRECTORYFILE)SYSTEMSERVICE(ZwQueryDirectoryFile)=NewZwQueryDirectoryFile;//把新的函数指针的值,赋给SSDT关于ZwQueryDirectoryFile函数的实际调用地址 问题三: 作者写的用c来写的(用DDK是可以编译过去的。) 我改成c++来编译 (ZWQUERYDIRECTORYFILE)SYSTEMSERVICE(ZwQueryDirectoryFile)=NewZwQueryDirectoryFile;//这句编译不过去 我改成memcpy((ZWQUERYDIRECTORYFILE)SYSTEMSERVICE(ZwQueryDirectoryFile),NewZwQueryDirectoryFile,32);//编译是过去了,运行Windows给了我蓝脸 如何解决. |
|
禁止发言
![]() |
沙发#
发布于:2010-11-18 10:22
用户被禁言,该主题自动屏蔽! |