Win64 驱动内核编程-12.回调监控进线程创建和退出
回調監控進線程創建和退出
? ? 兩個注冊回調的函數:PsSetCreateProcessNotifyRoutine???進程回調PsSetCreateThreadNotifyRoutine????線程回調分別對應的回調函數類型:
VOID MyCreateProcessNotify (IN HANDLE ParentId,IN HANDLE ProcessId,IN BOOLEAN Create ) {if (Create) {DbgPrint("[monitor_create_process_x64]進程創建! PID=%ld;PPID=%ld\n", ProcessId, ParentId);}else {DbgPrint("[monitor_create_process_x64]進程退出! PID=%ld;PPID=%ld\n", ProcessId, ParentId);} }VOID MyCreateThreadNotify (IN HANDLE ProcessId,IN HANDLE ThreadId,IN BOOLEAN Create ) {if (Create) {DbgPrint("[monitor_create_process_x64]線程創建! PID=%ld;TID=%ld\n", ProcessId, ThreadId);}else {DbgPrint("[monitor_create_process_x64]線程退出! PID=%ld;TID=%ld\n", ProcessId, ThreadId);} } 注冊回調: PsSetCreateProcessNotifyRoutine(MyCreateProcessNotify, FALSE); PsSetCreateThreadNotifyRoutine(MyCreateThreadNotify);注銷回調(在DriverUnload里面調用): PsSetCreateProcessNotifyRoutine(MyCreateProcessNotify, TRUE); PsRemoveCreateThreadNotifyRoutine(MyCreateThreadNotify);執行結果:
OK上面很好理解,就是進程線程創建退出的時候會對應的調這些回調,通過這個我們可以監控進程和線程的調用和退出情況。但是在學習過程中書上說了這個回調:
PsSetCreateProcessNotifyRoutineEx?,
這個的回調函數參數不同于PsSetCreateProcessNotifyRoutine,
VOID?MyCreateProcessNotifyEx(__inout???PEPROCESS?Process,__in??????HANDLE?ProcessId,
__in_opt??PPS_CREATE_NOTIFY_INFO?CreateInfo
){}
通過第三個參數CreateInfo->CreationStatus=STATUS_UNSUCCESSFUL;
但是一直卡在一個地方:
? ? 查了很多地方,是說在source文件里添加:LINKER_FLAGS=/INTEGRITYCHECK
不過我用的WDK+Vs2015開發的,我理解的source是改.rc文件但是失敗了,一直在找解決方案。找到再把這個補上吧,目的是為了使用Ex的函數進行進程創建劫持。
總結
以上是生活随笔為你收集整理的Win64 驱动内核编程-12.回调监控进线程创建和退出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win64 驱动内核编程-11.回调监控
- 下一篇: Win64 驱动内核编程-13.回调监控