能夠看到調用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