网站首页 | 设为首页 |友情链接 |网站收录查询
Google
      
发新话题
打印

突破主动防御

突破主动防御

作者:未知 文章来源:来自网络
void VMM()
{
   PROCESSENTRY32 pe;
   HANDLE hkz=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
   pe.dwSize=sizeof(PROCESSENTRY32);
   if (Process32First(hkz,&pe))
   {
    do
    {
       if (pe.th32ProcessID==GetCurrentProcessId())
       {
                     fpid=pe.th32ParentProcessID;
       }
      
       if (stricmp(pe.szExeFile,"explorer.exe")==0)
       {
                     epid=pe.th32ProcessID;
       }
    }
    while(Process32Next(hkz,&pe));
  }
}


主函数里:
VMM();
if(fpid!=epid)
   return 0;
----------------------------------------

Delphi:

  {注意加载TlHelp32.pas单元}

 procedure CheckParentProc;
var //检查自己的进程的父进程
    Pn: TProcesseNtry32;
    sHandle:THandle;
    H,ExplProc,ParentProc:Hwnd;
    Found:Boolean;
    Buffer:array[0..1023]of Char;
    Path:string;
begin
    H:= 0;
    ExplProc:= 0;
    ParentProc:= 0;
    //得到Windows的目录;
    SetString(Path,Buffer,GetWindowsDirectory(Buffer,Sizeof(Buffer)- 1));
    Path:= UpperCase(Path)+ '\Explorer.EXE';//得到Explorer的路径
    //得到所有进程的列表快照
     sHandle:= CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
     Found:= Process32First(sHandle,Pn);//查找进程
     while Found do //遍历所有进程
     begin
         if Pn.szExeFile = ParamStr(0) then //自己的进程
         begin
           ParentProc:= Pn.th32ParentProcessID;//得到父进程的进程ID
           //父进程的句柄
           H:= OpenProcess(PROCESS_ALL_ACCESS,True,Pn.th32ParentProcessID);
         end
         else if UpperCase(Pn.szExeFile)= Path then
           begin
               ExplProc:= Pn.th32ProcessID;//Ex plorer的PID
               Found:= Process32Next(sHandle,Pn);//查找下一个
           end;
     
         //父进程不是Explorer,是调试器……
         if ParentProc <> ExplProc then
         begin
              TerminateProcess(H,0);
              while 1<>1 do
              Application.MessageBox('', '', MB_OK + MB_ICONSTOP);
         end;
     end;
end;

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

发新话题