
-->Am 11:11 的相册 <-- -->Am 11:11 的网上硬盘<--
获取系统进程
几前日中毒了,虽然手工杀毒成功了,但误删了不少正常文件,造成系统很不稳定,最终还是重装系统了.
于是,心想搞一个可以结束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;
}
以上方法不能获取系统的一些进程模块信息..目前还不清楚是怎么回来,可能是权限不够.也不知道别人的工具用的是什么方法来获取的.继续摸索中.....




