HanDs
NO.2

[Delphi文章] 挂起与恢复Windows进程 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

最近准备写一个进程防火墙,需要用到挂起与恢复进程功能,一开始连想到挂起主线程得了,最后研究了一下其它安全类工具,发现Ntdll.dll中有两条很容易的API函数,使用起来很方便,不过功能和SuspendThread实现起来差不多,代码如下:
unit Unit1;  
 
interface 
 
uses  
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  Dialogs, StdCtrls;  
 
type  
  TForm1 = class(TForm)  
    Edit1: TEdit;  
    Button1: TButton;  
    Button2: TButton;  
    procedure Button1Click(Sender: TObject);  
    procedure Button2Click(Sender: TObject);  
  private 
    { Private declarations }  
  public 
    { Public declarations }  
  end;  
 
var 
  Form1: TForm1;  
  hProcess:THandle;  
 
  //ntdll.dll中的两条API,一条是用来挂起进程的API,一条是用来恢复进程的API  
 
  function SuspendProcess(hProcess:THandle):DWORD;stdcall;external 'ntdll.dll' Name 'ZwSuspendProcess';  
  function ResumeProcess(hProcess:THandle):DWORD;stdcall;external 'ntdll.dll' Name 'ZwResumeProcess';  
implementation  
 
{$R *.dfm}  
 
procedure TForm1.Button1Click(Sender: TObject);  
begin  
  //打开进程ID获取句柄  
  hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,StrtoInt(Edit1.Text));  
  //挂起进程  
  SuspendProcess(hProcess);  
end;  
 
procedure TForm1.Button2Click(Sender: TObject);  
begin  
  //恢复进程  
  ResumeProcess(hProcess);  
  //关闭句柄  
  CloseHandle(hProcess);  
end;  
 
end. 


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组