|
最近学习驱动的时候,看到可以利用 ObRegisterCallbacks 注册一个回调,并在回调函数中移除某些权限来达到保护进程的目的
无论是防止结束 还是防止被打开等,效果很好。
然而忽然间想到一个问题,如果我启动A和B两个进程,A进程是主程序本身,B进程就是一个直接生成的空白程序
能否像x32系统上,Hook NtOpenPorcess 当有一个调试器C进程想要打开A进程的时候,经过NtOpenPorcess时,函数内部实则打开B进程,然后将B进程的句柄返回,这样调试器C进程 打开的实则是B进程
然而在x64系统上,实在不知道怎么实现这个,在注册的回调函数中,第二个参数 中
POB_PRE_OPERATION_INFORMATION pOperationInformation
//被访问进程ID
HANDLE pid = PsGetProcessId((PEPROCESS)pOperationInformation->Object);
可以这样获取到被访问者的PID,能否在这里替换 Object 中的值来实现上述效果? |
|