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

解决方案 »

  1.   

    //通过父进程 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;
      

  2.   

    FILEMON,RENMON
    早期版本有源代码可以下
      

  3.   

    //通过父进程 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;