随笔 - 100  文章 - 50  trackbacks - 0
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(3)

随笔分类

随笔档案

文章分类

文章档案

收藏夹

我收藏的一些文章!

搜索

  •  

最新评论

阅读排行榜

评论排行榜

最近自己的电脑中了病毒后,老是通过其他端口往外发送数据,呵呵,可是公司的电脑,被公司的it整了n次了,还是说自己的电脑
老向外面发数据,it部门的人用macfee杀了n次,还是有问题。看来得自己解决了,
用netstat 命令查看一下当前的电脑的端口,发现有SYN_SENT 状态的,而且端口是8080,经常时有时无,
呵呵,觉得应该是病毒没有完全清楚,用netstat -ano命令找出是相应端口程序的pid,
在通过任务管理器查看有没有相应的进程,找了半天,都没有发现。但是问题还是经常出现,
在网上找了一个能通过pid找出相应程序名词。代码如下:

#include <windows.h>
#include <Psapi.h>
#include<iostream>
#include<conio.h>
using namespace std;
int printProcessNameByPid( DWORD ProcessId )
{
HANDLE pHd;
HMODULE pHmod;
char ProcessName[MAX_PATH] = "unknown";
DWORD cbNeeded;
pHd = OpenProcess( PROCESS_QUERY_INFORMATION |PROCESS_VM_READ, FALSE, ProcessId );
if(pHd == NULL)
return 0;

if(!EnumProcessModules( pHd, &pHmod, sizeof(pHmod), &cbNeeded))
return 0 ;
if(!GetModuleFileNameEx( pHd, pHmod, ProcessName, MAX_PATH))
return 0 ;

printf( "%d\t%s\n", ProcessId, ProcessName);
CloseHandle( pHd );
return 0 ;
}
int main(int argc, char* argv[])
{
    int pid;
    cout<<"please input the pid:";
    cin>>pid;
       printProcessNameByPid((DWORD)pid)
       getch();
 return 0;
}
通过输入的pid,可以找出相应的程序名称,并且知道程序在那里,但是有些系统的进程可能这个小程序返回不了
程序的位置,注意编译此程序要有额外的两个文件。Psapi.h和Psapi.Lib 我把它压缩成了psapi.rar /Files/jlin/psapi.rar
希望能对查毒有点帮助。


posted on 2008-08-14 16:52 fly 阅读(513) 评论(0)  编辑  收藏 所属分类: 病毒和杀毒

只有注册用户登录后才能发表评论。


网站导航: