- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
枚举本地-远程NT系统进程
枚举本地-远程NT系统进程
枚举本地-远程NT系统进程
Windows2000中有个工具taskmgr.exe就可以比较详细的查看当前系统进程信息,但是那是Windows GUI程序,有时候是不是觉得命令行下的东西更方便呢?其实已经有不少命令行下的枚举系统进程的工具了,M$的Resource Kit中好象也有,但去了解他们是怎么实现的,自己动手做出来,是不是更有意思呢:)
进程通常被定义为一个正在运行的程序的实例,它由两部分组成:
1操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。
2地址空间。它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间,如线程的堆栈和堆分配空间。
枚举系统进程的实现方法大概有四种,其中有一种可以用来枚举远程NT系统的进程,前提是有远程系统的管理员权限。
第一部分:调用PSAPI函数枚举系统进程
M$的Windows NT开发小组开发了自己Process Status函数,包含在PSAPI.DLL文件中,这些函数只能在高于NT4.0以后的版本中使用。PSAPI一共有14个函数[实际PSAPI.DLL输出函数有19个,但其中有5个函数有两个版本,分别是ANSI和Unicode版本],通过调用这些函数,我们可以很方便的取得系统进程的所有信息,例如进程名、进程ID、父进程ID、进程优先级、映射到进程空间的模块列表等等。为了方便起见,以下的例子程序只获取进程的名字和ID。
简单的程序如下:
/*************************************************************************
Module:ps.c
说明:调用PSAPI函数枚举系统进程名和ID,Only for NT/2000
*************************************************************************/
#include psapi.h
#pragma comment(lib,psapi.lib)
void PrintProcessNameAndID( DWORD processID )
{
char szProcessName[MAX_PATH] = unknown;
//取得进程的句柄
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
//取得进程名称
if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, hMod, sizeof(hMod), cbNeeded) )
GetModuleBaseName( hProcess, hMod, szProcessName,
sizeof(szProcessName) );
}
//回显进程名称和ID
printf( \n%-20s%-20d, szProcessName, processID );
CloseHandle( hProcess );
}
void main( )
{
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
//枚举系统进程ID列表
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), cbNeeded ) )
return;
// Calculate how many process identifiers were returned.
//计算进程数量
cProcesses = cbNeeded / sizeof(DWORD);
// 输出每个进程的名称和ID
for ( i = 0; i cProcesses; i++ )
PrintProcessNameAndID( aProcesses[i] );
return;
}
第二部分:调用ToolHelp API枚举本地系统进程
在第一部分提到的PSAPI函数只能枚举NT系统的进程,在Windows9x环境下我们可以通过调用ToolHelp API函数来达到枚举系统进程的目的。M$的
您可能关注的文档
最近下载
- 导数常用公式及练习题(必威体育精装版最全) .pdf
- DB32_T 3706-2019 住宅装饰装修质量规范(江苏省).pdf
- 冰雪运动知识竞赛100题(含答案).pdf VIP
- 姓氏笔画排序表.pdf VIP
- 苗木成活率保证措施.pdf VIP
- (正式版)D-Z-T 0452.2-2023 稀土矿石化学分析方法 第2部分:铝、铁、钙、镁、钾、钠、钛、锰、磷及15个稀土元素含量测定 混合酸分解―电感耦合等离子体原子发射光谱法.docx VIP
- 《国家公务员制度》(舒放)第4章.pptx VIP
- 中产车市洞察报告(2024版)-2024-07-市场解读.docx VIP
- 分布式光伏屋顶调查表.pdf VIP
- 优秀获奖感言.pptx
文档评论(0)