最近,任务管理器不时冒出多个rundll32.exe,偶用360工具一一查看其加载的dll,没发现不安全的,可用手工一一将之杀死,但不知何时突然又多了起来,十分讨厌,用360,德国小红伞检测未发现异常,仿佛对系统未造成伤害,只是慢慢在侵吞内存,谷歌了一下,没有理想答案,于是乎,我想自己编程找出到底是哪个进程在不时地创建rundll32.exe进程,要遍历进程我知道怎么做,但要实时监控到底是哪个“凶手”在不时地创建rundll32.exe进程,我就有点不知所错。

解决方案 »

  1.   

    typedef LONG (WINAPI *PROCNTQSIP)(HANDLE,UINT,PVOID,ULONG,PULONG);
    DWORD CRegister::GetParentProcessID(DWORD dwId)
    {
    if(!NtQueryInformationProcess)
    NtQueryInformationProcess = (PROCNTQSIP)GetProcAddress(GetModuleHandle(TEXT("NTDLL.dll")),"NtQueryInformationProcess");    LONG                      status;
        DWORD                     dwParentPID = (DWORD)-1;
        HANDLE                    hProcess;
        PROCESS_BASIC_INFORMATION pbi;

        // Get process handle
        hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwId);
        if (!hProcess)
    return (DWORD)-1;

        // Retrieve information
        status = NtQueryInformationProcess( hProcess,
    ProcessBasicInformation,
    (PVOID)&pbi,
    sizeof(PROCESS_BASIC_INFORMATION),
    NULL
    );

        // Copy parent Id on success
        if  (!status)
            dwParentPID = pbi.InheritedFromUniqueProcessId;

        CloseHandle (hProcess);

    return dwParentPID;
    }