能力值:
( LV2,RANK:10 )
|
-
-
2 楼
ntoskrnl.exe导出的函数都可直接调用 ssdt主要是用于支持R3到R0系统调用的
nt!ZwOpenProcess要先模拟从R3到R0的过程后再调用nt!NtOpenProcess
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
具体你可以baidu搜索Nt vs Zw 或自己kd下反汇编
|
能力值:
( LV9,RANK:610 )
|
-
-
4 楼
设置Ethread->PreviousMode为KernelMode,就可以直接调用NtXXX函数了,但是有很多NtXXX函数并没有导出~~
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
没错, 区别就是ZwXxx查询SSDT调用相应的NtXxx而且设置previous mode 为 kernelMode. 如果你直接调用NtXxx, 如果是用户线程, previous mode 是userMode, 那么NtXxx的Probe检查就过不去
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
十分感谢各位前辈的解答了 以前一直晕
也就是说在驱动中用ZW*函数还是要去SSDT查找地址的
而Nt*则不用 但调用前需要设置Ethread->PreviousMode为KernelMode
而有些Nt*没导出 所以直接调用的话需要先定位其地址
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
NTXXX是棘突实现
ZWXXX模拟R3 到R0的过程
你在R0 可以直接调用导出的NTXXX但是要先声明
没有导出的只有定位了
|
|
|