方法1: ZwQuerySystemInformation

这个方法网上一搜一大堆,不举例了

方法2:暴力枚举PID枚举进程,代码:

  1. NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegStr)
  2. {
  3. pDriverObj->DriverUnload = MyUnload;
  4. DbgPrint("DriverEntry...\n");
  5. //1.暴力枚举PID,枚举进程
  6. for (ULONG i = 0; i < 65535; i += 4)
  7. {
  8. SearchProcessPID(i);
  9. }
  10. return STATUS_SUCCESS;
  11. }
  12. //暴力枚举PID,枚举进程
  13. NTSTATUS SearchProcessPID(ULONG pid)
  14. {
  15. NTSTATUS status = STATUS_SUCCESS;
  16. PEPROCESS process = NULL;
  17. PUCHAR processName;
  18. status = PsLookupProcessByProcessId((HANDLE)pid, &process);
  19. processName = ExAllocatePool(NonPagedPool, sizeof(process));
  20. if (NT_SUCCESS(status))
  21. {
  22. processName = PsGetProcessImageFileName(process);
  23. DbgPrint("PID:%d,processName:%s\n", pid, processName);
  24. }
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegStr)
{ pDriverObj->DriverUnload = MyUnload; DbgPrint("DriverEntry...\n"); //1.暴力枚举PID,枚举进程
for (ULONG i = 0; i < 65535; i += 4)
{
SearchProcessPID(i);
}
return STATUS_SUCCESS;
}
//暴力枚举PID,枚举进程
NTSTATUS SearchProcessPID(ULONG pid)
{
NTSTATUS status = STATUS_SUCCESS;
PEPROCESS process = NULL;
PUCHAR processName;
status = PsLookupProcessByProcessId((HANDLE)pid, &process);
processName = ExAllocatePool(NonPagedPool, sizeof(process));
if (NT_SUCCESS(status))
{
processName = PsGetProcessImageFileName(process);
DbgPrint("PID:%d,processName:%s\n", pid, processName);
}

方法3和方法1原理相同,枚举eprocess结构体的ActiveProcessLinks链表实现,代码如下

  1. //通过EPROCESS枚举进程
  2. NTSTATUS SearchProcessEPROCESS()
  3. {
  4. PEPROCESS process=NULL,firstProcess=NULL;
  5. NTSTATUS status = STATUS_SUCCESS;
  6. PLIST_ENTRY plist;
  7. process = firstProcess = PsGetCurrentProcess();
  8. do
  9. {
  10. PUCHAR ProcessNmae = NULL;
  11. ProcessNmae = PsGetProcessImageFileName(process);
  12. DbgPrint("PID:%d,ProcessName:%s\n", (HANDLE)PsGetProcessId(process), ProcessNmae);
  13. plist = (PLIST_ENTRY)((ULONG)process + ACTIVE_PROCESS_LINK);
  14. process = (PEPROCESS)((ULONG)plist->Flink - ACTIVE_PROCESS_LINK);
  15. if (process == firstProcess)
  16. {
  17. break;
  18. }
  19. } while (process != NULL);
  20. return status;
  21. }
//通过EPROCESS枚举进程
NTSTATUS SearchProcessEPROCESS()
{
PEPROCESS process=NULL,firstProcess=NULL;
NTSTATUS status = STATUS_SUCCESS;
PLIST_ENTRY plist;
process = firstProcess = PsGetCurrentProcess();
do
{
PUCHAR ProcessNmae = NULL;
ProcessNmae = PsGetProcessImageFileName(process);
DbgPrint("PID:%d,ProcessName:%s\n", (HANDLE)PsGetProcessId(process), ProcessNmae);
plist = (PLIST_ENTRY)((ULONG)process + ACTIVE_PROCESS_LINK);
process = (PEPROCESS)((ULONG)plist->Flink - ACTIVE_PROCESS_LINK);
if (process == firstProcess)
{
break;
}
} while (process != NULL); return status;
}

jpg 改 rar

r0遍历系统进程方法总结的更多相关文章

  1. jQuery 遍历 - parent() 方法

    ylbtech-jQuery-sizzle:jQuery 遍历 - parent() 方法  parent() 获得当前匹配元素集合中每个元素的父元素,使用选择器进行筛选是可选的. 1.A,jQuer ...

  2. java集合类遍历删除方法测试以及使用场景记录

    package test0; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java. ...

  3. iOS开发之使用block块进行数据遍历的方法

    看了一篇文章,发现遍历数组.字典中的数据时,除了使用for循环外,还可以使用block块进行操作,瞬间感觉iOS的语言代码确实有点高大上的感觉,下面就简单的介绍一下这个方法. 首先是最基本的运用形式, ...

  4. Map<String, String>循环遍历的方法

    Map<String, String>循环遍历的方法 Map<String, String>循环遍历的方法 Map<String, String>循环遍历的方法 下 ...

  5. jQuery 遍历 - eq() 方法 查找当前元素

    jQuery 遍历 - eq() 方法 if(data[i].status !='已送达'){ $('.w-beget').eq(i).attr('disabled','disabled'); }

  6. jsp c标签不遍历的方法

    生产中遇到过不需要遍历的事情. 一般遍历必须要 <c:forEach items="${resultObj.xxx}" var="data" varSta ...

  7. jQuery 遍历 - each() 方法

    定义和用法 each() 方法规定为每个匹配元素规定运行的函数. 提示:返回 false 可用于及早停止循环. 语法 $(selector).each(function(index,element)) ...

  8. java 遍历map 方法 集合 五种的方法

    package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...

  9. 无向图的DFS遍历(方法之一)

    如果看不懂辅助解释在后面第点 1.录入方式: 输入 u - v  表示一边的2个端点 2.存储结构 struct edge { int from; int to; int next; } e[MAXN ...

随机推荐

  1. 数学软件 之 基于MATLAB的DFP算法

    DFP算法是本科数学系中最优化方法的知识,也是无约束最优化方法中非常重要的两个拟Newton算法之一,上一周写了一周的数学软件课程论文,姑且将DFP算法的实现细节贴出来分享给学弟学妹参考吧,由于博客不 ...

  2. ACM/ICPC 之 快排+归并排序-记录顺序对(TSH OJ-LightHouse(灯塔))

    TsingHua OJ 上不能使用<algorithm>头文件,因此需要手写快排(刚开始写的时候自己就出了很多问题....),另外本题需要在给横坐标排序后,需要记录纵坐标的顺序对的数量,因 ...

  3. opencart 引入 TWIG 模板引擎

     1.首先将 twig 包放入 system\library 目录. 2.在 system/startup.php 文件最后添加引入语句. require_once(DIR_SYSTEM . 'lib ...

  4. GNOME启动时激活NumLock(小键盘数字锁定)

    首先下载numlockx官方源提供的安装包,解压后进入目录运行终端,切换到root账户执行以下命令: python ./setup.py 然后依次点击GNOME菜单项上的“系统->首选项-> ...

  5. ORACLE 远程导入导出数据库

      Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. ...

  6. Java反射实战

    一.背景 最近的项目中需要使用到Java 反射的知识,以前不怎么了解,也基本没怎么用过,抽出一片时间,来具体学习和实战下Java的反射!拿来和大家分享以及记录方便以后学习! 二.反射相关概念解析 1. ...

  7. WIN7 64位系统下,右下角的声音和电源图标不见的解决办法

    近日,电脑突然出现任务栏右下角的声音和电源图标消失不见的问题,重启仍旧没有修复,后来找到了解决办法 解决办法: 1.Ctrl+Shift+Esc键调出windows资源管理器. 2.找到进程中的exp ...

  8. 3ds max的动画输出

    转自:http://zhidao.baidu.com/link?url=qc3vV2A9-ydb-YiVKoF7z_bIIRlmLSkyl8DcuWNYn8FaBxa2BDVLwuGPX_jYWxbw ...

  9. Innodb之监控Buffer pool Load progress

    你可以使用PERFORMANCE SCHEMA中的相关信息监控BUFFER POOL状态加载进程. 1. 启用 stage/innodb/buffer pool load instrument: 2. ...

  10. C语言字母频率统计

    在进行密码破解时有时候需要得到字母出现的频率信息,下面我将简单的使用C语言来读取一个文件,然后统计该文件内的字母出现的频率. 1.在D盘下新建一个文本文件(文件名为"A.txt") ...