所有进程的名字和他使用的模块名以及其它信息

#include <Windows.h>
#include <tchar.h>
#include <TlHelp32.h>
#include <vector>
#include <map>
#include <iostream>
using namespace std;
PVOID GetModulBaseAddr(DWORD dwProcessID,PVOID pvModuleRemote)
{
    PVOID pvBaseAddr = NULL;
    IMAGE_DOS_HEADER dosHdr;
    IMAGE_NT_HEADERS ntHdr;
    Toolhelp32ReadProcessMemory(dwProcessID,pvModuleRemote,&dosHdr,sizeof(dosHdr),NULL);
    if(dosHdr.e_magic == IMAGE_DOS_SIGNATURE)
    {
        Toolhelp32ReadProcessMemory(dwProcessID,(PBYTE)pvModuleRemote+dosHdr.e_lfanew,&ntHdr,sizeof(ntHdr),NULL);
        if(ntHdr.Signature == IMAGE_NT_SIGNATURE)
        {
            pvBaseAddr = (PVOID)ntHdr.OptionalHeader.ImageBase;
        }
    }
    return pvBaseAddr;
}

int main()    
{    
    HANDLE hHandle = CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
    PROCESSENTRY32 pe;
    pe.dwSize = sizeof(pe);
    BOOL bOk = Process32First(hHandle,&pe);
    int ProcessCnt = 0;
    while(bOk)
    {
        ProcessCnt++;
        if(pe.th32ProcessID == 0)
        {
            bOk = Process32Next(hHandle,&pe);
            if(!bOk) break;
        }
    

        wcout<<"进程名:"<<pe.szExeFile<<endl;
        wcout<<"进程ID:"<<pe.th32ProcessID<<endl;
        wcout<<"父进程ID:"<<pe.th32ParentProcessID<<endl;
        wcout<<"进程优先级:"<<pe.pcPriClassBase<<endl;
        wcout<<"子线程个数:"<<pe.cntThreads<<endl;


        
        HANDLE hHandle2 = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,pe.th32ProcessID);


        MODULEENTRY32 me;
        me.dwSize = sizeof(me);
         if(Module32First(hHandle2,&me))
         {
        //    if(me.th32ProcessID == pe.th32ProcessID)
            {
                wcout<<"模块名:"<<_tcsrchr(me.szExePath,TEXT('\\'))+1;
                PVOID pAddr = GetModulBaseAddr(pe.th32ProcessID,me.modBaseAddr);
                if(pAddr == me.modBaseAddr)
                {
                    wcout<<" 模块地址:"<<(LPINT)pAddr<<endl;
                }
                else
                {
                    wcout<<" 模块地址:("<<(LPINT)me.modBaseAddr<<")"<<endl;

                }
            }
             while(Module32Next(hHandle2,&me))
             {
            //    if(me.th32ProcessID == pe.th32ProcessID)
                {
                     wcout<<"模块名:"<<_tcsrchr(me.szExePath,TEXT('\\'))+1;
                    PVOID pAddr = GetModulBaseAddr(pe.th32ProcessID,me.modBaseAddr);
                    if(pAddr == me.modBaseAddr)
                    {
                        wcout<<" 模块李承鹏地址:"<<(LPINT)pAddr<<endl;
                    }
                    else
                    {
                        wcout<<" 模块地址:("<<(LPINT)me.modBaseAddr<<")"<<endl;
                    }
                }
             }
         }


        THREADENTRY32 te;
        te.dwSize = sizeof(te);
        if(Thread32First(hHandle,&te))
        {
            if(te.th32OwnerProcessID == pe.th32ProcessID)
                wcout<<"  线程ID:"<<te.th32ThreadID;
            while(Thread32Next(hHandle,&te))
            {
                if(te.th32OwnerProcessID == pe.th32ProcessID)
                    wcout<<"  线程ID:"<<te.th32ThreadID;
            }
        }

        wcout<<endl<<"============================"<<endl;
        bOk = Process32Next(hHandle,&pe);
    }


    wcout<<"共统计进程数"<<ProcessCnt<<endl;
    getchar();
    return 0;    
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值