delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
关于进程隐藏问题:远程线程注入方式 Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiAPI/html/delphi_20061205213557120.html
网上搜索了好多关于   关于进程隐藏问题,实现的方式几乎都是以远程线程注入方式  
  我依葫芦画瓢的做了一个,但是在目标进程里面请求内存空间的时候老是失败,不知道为什么,请高人指点.  
  代码如下:  
   
  Type  
      TParam   =   packed   record  
          fLoadLibrary:   DWORD;  
          fGetProcAddress:   DWORD;  
          sUser:   array[0..10]   of   Char;  
          sMessage:   array[0..11]   of   Char;  
      end;  
   
  Const  
      IntoProName='SvcHost.exe';  
  var  
      ExeFileName:   String;  
      ContinueLoop:   Boolean;  
      FSnapshotHandle:   THandle;  
      FProcessEntry32:   TProcessEntry32;  
      hprocess:   DWORD;  
      param:   TParam;  
      pparam,   pfunc:   Pointer;  
   
  begin  
      Application.Initialize;  
      FSnapshotHandle   :=   CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,   0);  
      FProcessEntry32.dwSize   :=   Sizeof(FProcessEntry32);  
      ContinueLoop   :=   Process32First(FSnapshotHandle,FProcessEntry32);  
      while   integer(ContinueLoop)   <>   0   do  
      begin  
          if   UpperCase(FProcessEntry32.szExeFile)=UpperCase(IntoProName)   then  
          Begin  
              hprocess:=   FProcessEntry32.th32ProcessID;  
              Break;  
          End;  
          ContinueLoop   :=   Process32Next(FSnapshotHandle,FProcessEntry32);  
      end;  
      //找到目標進程  
      if   hprocess   =   0   then   begin  
          MessageBox(0,   '無法開啟行程',   '訊息',   MB_OK   or   MB_ICONWARNING);  
          Exit;  
      end;  
      //   在目標行程內要求參數記憶體  
      pparam   :=   VirtualAllocEx(hprocess,   nil,   SizeOf(param),   MEM_COMMIT,   PAGE_EXECUTE_READWRITE);  
      if   pparam   =   nil   then   begin  
          MessageBox(0,   '要求參數記憶體失敗',   '訊息',   MB_OK   or   MB_ICONWARNING);  
          CloseHandle(hprocess);  
          Exit;  
      end;  
   
      Application.Run;  
  end.  
   
  ========================================================  
  运行到     if   pparam   =   nil   then   begin   这里时   pparam   总是   Nil  
 

沒人回答,UP一下。

沒人回答,再一下。

沒人回答,還UP一下。

你的问题是需要隐藏进程还是需要远程线程注入?

有什麼區別麼?  
  按我的理解這樣也能實現我的需求吧?  
  我是想在一個系統進程裡面注入我的線程然後運行一個函數。這樣有什麼區別麼?  
  我的目的只是不讓別人結束掉我的進程而已。  
  不知道我理解的對不對

你的process没有足够的权限。先用AdjustTokenPrivileges,如果成功了然后再来。  
   
  而且先要OpenProcess(PROCESS_ALL_ACCESS,...),然后才是你的VirtualAlloc。  
   
  如果你不明白自己为什么做这些,就不要费劲了,想CreateRemoteThread()?如果又失败了呢?  
  如何调试?  
   
  多看看操作系统和windows系统编程的书,搞清楚一些概念再做。  
   
  防止別人結束掉我的進程,和隐藏进程,以及远程线程注入,是3个不同的概念。

謝謝指點。  
  馬上翻書   :)。  
  本人初學還望各位以後多多指教。  
 

UP   xuexi

强烈鄙视问题解决后不结贴的人!  
  强烈鄙视技术问题解决后把贴子转移到非技术区的人!  
  鄙视你们!  
   
  http://community.csdn.net/Expert/topic/5216/5216675.xml?temp=.9262659

posted on 2008-09-23 09:36 delphi2007 阅读(129) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。