r0遍历系统进程方法总结
方法1: ZwQuerySystemInformation
这个方法网上一搜一大堆,不举例了
方法2:暴力枚举PID枚举进程,代码:
- 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);
- }

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链表实现,代码如下
- //通过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;
- }

//通过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遍历系统进程方法总结的更多相关文章
- jQuery 遍历 - parent() 方法
ylbtech-jQuery-sizzle:jQuery 遍历 - parent() 方法 parent() 获得当前匹配元素集合中每个元素的父元素,使用选择器进行筛选是可选的. 1.A,jQuer ...
- java集合类遍历删除方法测试以及使用场景记录
package test0; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java. ...
- iOS开发之使用block块进行数据遍历的方法
看了一篇文章,发现遍历数组.字典中的数据时,除了使用for循环外,还可以使用block块进行操作,瞬间感觉iOS的语言代码确实有点高大上的感觉,下面就简单的介绍一下这个方法. 首先是最基本的运用形式, ...
- Map<String, String>循环遍历的方法
Map<String, String>循环遍历的方法 Map<String, String>循环遍历的方法 Map<String, String>循环遍历的方法 下 ...
- jQuery 遍历 - eq() 方法 查找当前元素
jQuery 遍历 - eq() 方法 if(data[i].status !='已送达'){ $('.w-beget').eq(i).attr('disabled','disabled'); }
- jsp c标签不遍历的方法
生产中遇到过不需要遍历的事情. 一般遍历必须要 <c:forEach items="${resultObj.xxx}" var="data" varSta ...
- jQuery 遍历 - each() 方法
定义和用法 each() 方法规定为每个匹配元素规定运行的函数. 提示:返回 false 可用于及早停止循环. 语法 $(selector).each(function(index,element)) ...
- java 遍历map 方法 集合 五种的方法
package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...
- 无向图的DFS遍历(方法之一)
如果看不懂辅助解释在后面第点 1.录入方式: 输入 u - v 表示一边的2个端点 2.存储结构 struct edge { int from; int to; int next; } e[MAXN ...
随机推荐
- Django用户管理及认证
同步组http://www.douban.com/group/topic/29387804/ ldapsearch -x -w password -D "cn=me,cn=Users,dc= ...
- IDEA Error:java: 未结束的字符串文字
首页 > 编程交流 > 基础篇 > IDEA Error:java: 未结束的字符串文字 201601-25 IDEA Error:java: 未结束的字符串文字 IDEA开发, ...
- Jquery 实现 “下次自动登录” 记住用户名密码功能
转载自:http://blog.csdn.net/aspnet_lyc/article/details/12030039?utm_source=tuicool&utm_medium=refer ...
- ios 中清除webView的缓存
在UIWebView下,可以使用 [[NSURLCache sharedURLCache] removeAllCachedResponses];//清除缓存 来实现清除缓存,但当替换使用WKWebVi ...
- hdu2302(枚举,大数取模)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2303 题意:给出两个数k, l(4<= k <= 1e100, 2<=l<=1 ...
- Xcode开发中的6个小技巧
Xcode是iPhone和iPad开发者用来编码或者开发iOS app的IDE.Xcode有很多小巧但很有用的功能,很多时候我们可能没有注意到它们,也或者我们没有在合适的水平使用这些功能简化我们的iO ...
- NYOJ题目62笨小熊
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr4AAAK1CAIAAAChInrhAAAgAElEQVR4nO3dO3LjutaG4X8Szj0Qxx
- NYOJ题目813对决
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAssAAALRCAIAAAAiJ3lxAAAgAElEQVR4nO3dPW7jSgMu6LsJ516IYy
- Android之IPC机制
Android IPC简介 任何一个操作系统都需要有相应的IPC机制,Linux上可以通过命名通道.共享内存.信号量等来进行进程间通信.Android系统不仅可以使用了Binder机制来实现IPC,还 ...
- Python中format的用法
自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足.那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱.语法 它通过{}和: ...