HOOK SwapContext 枚举隐藏进程(学习笔记4)(3)
2012-07-26 22:42
441 查看
190 |
191 | void klisterUnload(IN PDRIVER_OBJECT pDriverObject) |
192 | { |
193 | BeTerminate = 1; |
194 | while (BeTerminate |
01 | // |
02 | { |
03 |
04 | } |
05 |
06 | if (GoBackAddr) //PBYTE GoBackAddr = NULL; |
07 | HookSwapFunction(FALSE); |
08 | } |
09 |
10 | void showProcess() |
11 | { |
12 |
13 | PProcessList temp; |
14 | DWORD count = 0; |
15 | PUCHAR pFileName; |
16 | temp = wLastItem; |
17 |
18 |
19 | while (temp) //遍历链表 |
20 | { |
21 | if (temp->pEPROCESS) |
22 | { |
23 | count++; |
24 | pFileName = ( PUCHAR )((unsigned int )(temp->pEPROCESS) + 0x174); |
25 | DbgPrint( "0x%08X ,(unsigned int )(temp->pEPROCESS), pFileName); |
26 | } |
27 | temp = PProcessList(temp->NextItem); |
28 | } |
29 |
30 | DbgPrint( "共有%d个进程" , count); |
31 | } |
32 |
33 |
34 | void WorkThread(IN PVOID pContext) |
35 | { |
36 | LARGE_INTEGER timeout; |
37 |
38 | while ( true ) |
39 | { |
40 | if (MmIsAddressValid(&BeTerminate) |
source
print?
01 | // 因为BeTerminate是在UNLOAD中设置的 可能驱动卸载后 这个变量不能访问 所以用MmIsAddressValid判断下 |
02 | { |
03 | if (BeTerminate == 0) |
04 | { |
05 |
06 | //等待单位是 |
07 | timeout |
08 |
09 | KeDelayExecutionThread(KernelMode, FALSE, &timeout); |
10 | DbgPrint( "搜集到的进程是" ); |
11 | showProcess(); |
12 | } |
13 | else |
14 | { |
15 | BeTerminate = 3; |
16 | PsTerminateSystemThread(STATUS_SUCCESS); |
17 | goto __end; |
18 | } |
19 | } |
20 | else |
21 | { |
22 | BeTerminate = 3; |
23 | PsTerminateSystemThread(STATUS_SUCCESS); |
24 | goto __end; |
25 | } |
26 | } |
27 | __end:; |
28 | } |
29 |
30 |
31 | // 驱动程序加载时调用DriverEntry例程 |
32 | NTSTATUS DriverEntry( |
33 | IN |
34 | IN PUNICODE_STRING pRegistryPath |
35 | ) |
36 | { |
37 | NTSTATUS dwStAtus; |
38 | HANDLE hThread; |
39 |
40 | pDriverObject->DriverUnload=klisterUnload; |
41 |
42 | dwStAtus = PsCreateSystemThread(&hThread, |
43 | (ACCESS_MASK)0, |
44 | NULL, |
45 | ( HANDLE )0, |
46 | NULL, |
47 | WorkThread, |
48 | NULL |
49 | ); |
50 |
51 |
52 | GetSwapAddr(); |
53 | if (GoBackAddr){ |
54 | HookSwapFunction(TRUE); |
55 | } |
56 | return STATUS_SUCCESS; |
57 | } |
相关文章推荐
- HOOK SwapContext 枚举隐藏进程(学习笔记4)(1)
- HOOK SwapContext 枚举隐藏进程(学习笔记4)
- Linux进程线程学习笔记:运行新程序
- 进程线程等学习笔记
- python学习笔记——multiprocessing 多进程中的重构方法__init__
- LINUX内核USB子系统学习笔记之初识USB (带枚举usb数据包)
- linux 进程学习笔记-进程状态
- mjpg-streamer学习笔记3----主进程
- Linux 学习笔记(八)周期性进程
- java学习笔记10--枚举
- 学习笔记(八)进程与服务
- 进程隐藏与进程保护(SSDT Hook 实现)(三)
- unix环境编程学习笔记-----有关进程的一些疑问???
- 进程模块枚举与隐藏
- 第45讲:Scala中Context Bounds代码实战及其在Spark中的应用源码解析学习笔记
- JavaWeb学习笔记-spring-02-ioc-BeanFactory&ApplicationContext
- 学习笔记---枚举类型、联合体、自定义类型
- OpenCV学习笔记(2)隐藏 Console 窗口
- 操作系统学习笔记(28)--初始化进程调度
- 黑马程序员——java 枚举学习笔记