获取系统进程

[ 2008-7-20 21:30:00 | By: AmLinger ]

几前日中毒了,虽然手工杀毒成功了,但误删了不少正常文件,造成系统很不稳定,最终还是重装系统了.

于是,心想搞一个可以结束DLL木马的工具.当然网上流传的工具也有许多.目标多半是抱着SOFT-DIY的精神来玩玩.下面附上代码.

本次收获还是不小的,一向英文很差的我,竟然可以把全英文的MSDN中关于进程管理部分的HELP看的差不多.

// Dllkill.cpp : Defines the entry point for the console application.
//

#i nclude <windows.h>
#i nclude <stdlib.h>
#i nclude <stdio.h>
#i nclude <Tlhelp32.h>

int main(int argc, char* argv[])
{
 PROCESSENTRY32  Process;//进程结构
 MODULEENTRY32   Module;//模块结构
 THREADENTRY32   Thread;//线程结构

 HANDLE  ProcessSnapshot=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,NULL);//建立进程快照
 BOOL pRes=::Process32First(ProcessSnapshot,&Process);//查找首进程
 while (pRes)
 {
  //进程列举
  printf("\n%s",Process.szExeFile);
  HANDLE  ModuleSnapshot=::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,Process.th32ProcessID);//建立指定进程模块快照
  BOOL mRes=::Module32First(ModuleSnapshot,&Module);//查询首模块信息
  while(mRes)
  {

   //模块DLL列举
   printf("[%s]\t",Module.szModule);
   
   HANDLE  ThreadSnapshot=::CreateToolhelp32Snapshot(TH32CS_SNAPALL,Process.th32ProcessID);   //建立线程信息..
   BOOL tRes=::Thread32First(ThreadSnapshot,&Thread);//获得首指定
   while (tRes)
   {
   //线程列举
    printf("%d",Thread.tpBasePri);
    tRes=::Thread32Next(ThreadSnapshot,&Thread);
   }
       
   mRes=::Module32Next(ModuleSnapshot,&Module);
   CloseHandle(ThreadSnapshot); //关闭线程列举


  }
  pRes=::Process32Next(ProcessSnapshot,&Process);

  CloseHandle(ModuleSnapshot); //关闭模块列举
 }
 CloseHandle(ProcessSnapshot); //关闭进程列举
 return 0;
}

 

以上方法不能获取系统的一些进程模块信息..目前还不清楚是怎么回来,可能是权限不够.也不知道别人的工具用的是什么方法来获取的.继续摸索中.....

 

发表评论:

    大名:
    密码: (游客无须输入密码)
    主页:
    标题:
    正在载入数据,请稍候……