欢迎来到天天文库
浏览记录
ID:38795285
大小:34.75 KB
页数:12页
时间:2019-06-19
《枚举进程与进程加载模块》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于visualc++之windows核心编程代码分析(19)枚举进程以及进程加载模块信息分类:VC++编程技术VisualC++2010编程技术VisualStudio2012Windows8信息安全2011-12-1712:26114人阅读评论(0)收藏举报我们进行Windows安全编程的时候,经常需要检测进程,我们来实践一下枚举进程与进程加载模块。请见代码实现与注释分析。 viewplaincopytoclipboardprint?1./* 头文件 */ 2.#include 3.#include
2、 4.#include 5.#include 6./* 预处理声明 */ 7.#pragma comment (lib, "psapi.lib") 8./* 函数声明 */ 9.VOID WINAPI EnumProcess1(); 10.VOID WINAPI EnumProcess2(); 11.VOID ListProcessModules1( DWORD dwPID ); 12.VOID ListProcessModules2( DWORD dw
3、PID); 13.VOID PrintMemoryInfo( DWORD dwPID ); 14.VOID ShowProcessMemoryInfo( DWORD dwPID ); 15.VOID ListHeapInfo( DWORD dwPID ); 16.VOID ListProcessThreads( DWORD dwPID ); 17.VOID PrintError( LPTSTR msg ); 18. 19./************************************* 20.* VOID W
4、INAPI EnumProcess1() 21.* 功能 调用EnumProcesses遍历进程, 22.* 并调用ListProcessModules1函数和 23.* ListProcessThreads函数列举模块和线程 24.* 25.* 无参数,无返回值 1.**************************************/ 2.VOID WINAPI EnumProcess1() 3.{ 4. // 假设不超过1024个进程 5. DWORD aProcesse
5、s[1024], cbNeeded, cProcesses; 6. unsigned int i; 7. // 调用EnumProcesses 8. if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) 9. return; 10. // 进程数 11. cProcesses = cbNeeded / sizeof(DWORD); 12. for ( i = 0; i < cProcesses
6、; i++ ) 13. { 14. // 显示进程信息 15. printf( "**************************************************" ); 16. printf("PROCESS : %u",aProcesses[i]); 17. printf( "****************************************************" ); 18. //
7、 列举模块信息和线程信息 19. ListProcessModules1( aProcesses[i] ); 20. ListProcessThreads( aProcesses[i] ); 21. } 22.} 23./************************************* 24.* VOID WINAPI EnumProcess2() 25.* 功能 调用Process32First和Process32Next遍历进程, 26.* 并调用ListPr
8、ocessModules2函数列举模块, 27.* 调用ShowProcessMemoryInfo函数显示内存使用情况 28.* 29.* 无参数,无返回值 30.**********************
此文档下载收益归作者所有