能够看到调用NtOpenProcess的时候就会调用到他,这正起到了保护做用,其中最接近他的ObpCallPreOperationCallbacks函数和ObpPreInterceptHandleCreate函数在WRK中都没有,只有ObpCreateHandle在WRK中能够查到,这个函数解释为:This function creates a new handle to an existing object。至关于为了引用一个对象,新建一个句柄,这个句柄就是这个对象的引用方式。至此咱们知道了,是引用一个对象的时候才会触发到这个保护函数,看来PCHunter大牛仍是很强大的,把它分到了object钩子这类里边很精确。
再翻译了下大体就是说ObRegisterCallbacks函数来注册的回调,MSDN搜索发现有这样的解释:The ObRegisterCallbacks routine registers a list of callback routines for thread and process handle operations. 这和咱们遇到的状况同样,看来保护函数就是用这个函数来添加的了,怎么卸载呢?看看MSDN的左侧栏
发现一个对应的UN函数 点击查看解释:The ObUnRegisterCallbacks routine unregisters a set of callback routines that were registered with the ObRegisterCallbacks routine. 看来就是它了,两个函数的参数和进程建立卸载的系统回调差很少,具体能够参考《教你在64位Win7系统下使用ObRegisterCallbacks内核函数来实现进程保护》http://bbs.pediy.com/showthread.php?t=168023