笑落天狼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

很多时候我们会碰到杀进程的需求,但是很多程序会hook系统的api造成我们无法结束指定的进程。

 

你流氓,我只有更流氓!下面介绍一种模拟native api ZwTerminateProcess 结束进程的方法,这种方法可以结束掉hook的不深的进程。

 

那么hook的更深的怎么办?你深,我只有更深!不过这不在本文的讨论内容之内。

 

下面上代码:

 

 1 INT __declspec(naked) __stdcall ZwTerminateProcess(HANDLE ProcessHandle,INT ExitStatus)
 2 {
 3   __asm
 4   {
 5 //方法1
 6     mov     eax, 101h
 7     db      0xE8
 8     dd      0x00
 9     mov     edx,esp
10     sysenter
11     ret     8h
12 
13 /*方法2  lea edx,[esp + 4]
14     int 2eh
15     ret 2ch */
16   }
17 }
18 
19 void __fastcall TForm1::btn1Click(TObject *Sender)
20 {
21     HANDLE h = GetCurrentProcess();
22     ZwTerminateProcess(h,0);    
23 }

 

 

两种方法都是管用的。

我们看到其实Zw系列的api只是进入内核调用了一个指定序号的服务,上面的代码稍微修改一下就可以模拟出所有的Zw系列了。

 

怎么样?是不是感觉生活美好了一些啊?

posted on 2010-05-25 08:43  笑落天狼  阅读(2231)  评论(0)    收藏  举报