首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

如何判断是哪个程序执行某个程序

2012-03-04 
怎么判断是哪个程序执行某个程序?因为现在很多后门程序或木马,经常是有好几个分身,删了这个,另一个又把它

怎么判断是哪个程序执行某个程序?
因为现在很多后门程序或木马,经常是有好几个分身,删了这个,另一个又把它恢复了.
于是就想到写这种程序。
1.监视哪个目录   或   程序被哪个程序写入/更改   或   是被执行
2.监视注册表被写入了什么?

[解决办法]
API hook
[解决办法]
//通过父进程 ID判断

uses TlHelp32;

procedure TForm1.Button1Click(Sender: TObject);
var
vSnapshot: THandle;
vProcessEntry32: TProcessEntry32;
begin
vSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
vProcessEntry32.dwSize := SizeOf(TProcessEntry32);
Process32First(vSnapshot, vProcessEntry32);
repeat
if vProcessEntry32.th32ProcessID <> 0 then
begin
Memo1.Lines.Add(vProcessEntry32.szExeFile);
Memo1.Lines.Add(Format( ' 进程ID %d ', [vProcessEntry32.th32ProcessID]));
Memo1.Lines.Add(Format( ' 父进程ID %d ', [vProcessEntry32.th32ParentProcessID]));
end;
until not Process32Next(vSnapshot, vProcessEntry32);
CloseHandle(vSnapshot);
end;
[解决办法]
FILEMON,RENMON
早期版本有源代码可以下
[解决办法]
//通过父进程 ID判断

uses TlHelp32;

procedure TForm1.Button1Click(Sender: TObject);
var
vSnapshot: THandle;
vProcessEntry32: TProcessEntry32;
begin
vSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
vProcessEntry32.dwSize := SizeOf(TProcessEntry32);
Process32First(vSnapshot, vProcessEntry32);
repeat
if vProcessEntry32.th32ProcessID <> 0 then
begin
Memo1.Lines.Add(vProcessEntry32.szExeFile);
Memo1.Lines.Add(Format( ' 进程ID %d ', [vProcessEntry32.th32ProcessID]));
Memo1.Lines.Add(Format( ' 父进程ID %d ', [vProcessEntry32.th32ParentProcessID]));
end;
until not Process32Next(vSnapshot, vProcessEntry32);
CloseHandle(vSnapshot);
end;

热点排行