设为首页 加入收藏

TOP

驱动开发:内核监控进程与线程回调(三)
2023-07-23 13:32:36 】 浏览:81
Tags:程与线 程回调
&ethread); if (CreateInfo) { DbgPrint("[lyshark.com] 线程TID: %1d | 所属进程名: %s | 进程PID: %1d \n", ThreadId, PsGetProcessImageFileName(eprocess), PsGetProcessId(eprocess)); /* if (0 == _stricmp(PsGetProcessImageFileName(eprocess), "lyshark.exe")) { DbgPrint("线程TID: %1d | 所属进程名: %s | 进程PID: %1d \n", ThreadId, PsGetProcessImageFileName(eprocess), PsGetProcessId(eprocess)); // dt _kthread // 寻找里面的 Win32StartAddress 并写入ret pWin32Address = *(UCHAR**)((UCHAR*)ethread + 0x1c8); if (MmIsAddressValid(pWin32Address)) { *pWin32Address = 0xC3; } } */ } else { DbgPrint("[LyShark] %s 线程已退出...", ThreadId); } if (eprocess) ObDereferenceObject(eprocess); if (ethread) ObDereferenceObject(ethread); } VOID UnDriver(PDRIVER_OBJECT driver) { NTSTATUS status; // 注销进程回调 status = PsRemoveCreateThreadNotifyRoutine(MyCreateThreadNotify); } NTSTATUS DriverEntry(IN PDRIVER_OBJECT Driver, PUNICODE_STRING RegistryPath) { NTSTATUS status; DbgPrint("hello lyshark.com \n"); // 绕过签名检查 // LINKER_FLAGS=/INTEGRITYCHECK BypassCheckSign(Driver); // 创建线程回调 // 参数1: 新线程ProcessID // 参数2: 新线程ThreadID // 参数3: 线程创建/退出标志 status = PsSetCreateThreadNotifyRoutine(MyCreateThreadNotify); if (!NT_SUCCESS(status)) { DbgPrint("创建线程回调错误"); } Driver->DriverUnload = UnDriver; return STATUS_SUCCESS; }

运行后则可监控到系统总所有线程的创建与退出,效果如下所示:

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c语言学习总结(原创) 下一篇驱动开发:内核注册并监控对象回调

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目