RING3下 内存清零法 杀进程

这一篇写的比较详细,适合我这样的菜鸟看

==================================================================================================

转自:http://hi.baidu.com/pingsuper/blog/item/3c9ebd3c84ac20cc7d1e7104.html

在一般任务管理器无法关闭进程时用到

内存清零法 杀进程 原理分析

1.先打开CSRSS.EXE系统进程,获得其句柄,几乎系统所有的HANDLE结构体中,里面的ProcessId都是指向csrss.exe的,利用它的PID来进行遍历进程实现过滤。

2.分配好一块内存空间Buffer,用来存储SystemHandleInformation系统句柄信息

3.通过ZwQuerySystemInformation函数来查询系统句柄信息并保存在Buffer中,为 ZwQuerySystemInformation 函数传递16号参数,且Buffer的开始出保存的是系统句柄的数量.偏移4才是句柄信息

4.遍历Buffer中PSYSTEM_HANDLE_TABLE_ENTRY_INFO结构
typedef struct _SYSTEM_HANDLE_INFORMATION {
    ULONG NumberOfHandles;
    SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[ 1 ];
} SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION;

0xxxxxxx ULONG NumberOfHandles
...       PSYSTEM_HANDLE_TABLE_ENTRY_INFO
...       PSYSTEM_HANDLE_TABLE_ENTRY_INFO
..        PSYSTEM_HANDLE_TABLE_ENTRY_INFO
.          .
.          .
.          .

5.几乎系统所有的HANDLE结构体中,里面的ProcessId都是指向csrss.exe的,
h_info[i].UniqueProcessId== (ULONG)csrss_id) && (h_info[i].ObjectTypeIndex== 5
利用这个特性 来进行过滤句柄,遍历每个进程

6.有些时候,进程句柄是打不开的,通过遍历进程,可以得到句柄值,在知晓句柄值后,就可以进行句柄复制了
ZwDuplicateObject(
     ph,
     (PHANDLE)h_info[i].HandleValue,
     (HANDLE)-1,
     &h_dup,//复制后得到的句柄
     0,
     0,
     DUPLICATE_SAME_ACCESS)
复制后的句柄,就可以随便操作了

7.使用ZwQueryInformationProcess函数来查询改句柄的PID,用来遍历到要操作的目标进程

8.其实可以用更简单的方式打开进程的,1-7步的目的就是一种非常规打开进程的方式,目的就是防止杀毒防护软件等对句柄的保护. 如果找到并打开了目标进程,就可以操作该进程内存,往该进程空间写入垃圾数据,让程序自己崩溃。
if (pbi.UniqueProcessId == dwProcessId)
    {
     MessageBox(0, "目标已确定!", "!", MB_OK);

     for (i = 0x1000; i < 0x80000000; i = i + 0x1000)
     {
      PVOID pAddress = (PVOID) i;
      ULONG sz = 0x1000;
      ULONG oldp;

      if (ZwProtectVirtualMemory (h_dup, &pAddress, &sz, PAGE_EXECUTE_READWRITE, &oldp) == STATUS_SUCCESS) {             
       ZwWriteVirtualMemory(h_dup, pAddress, buf, 0x1000, &oldp);
      }         
     }

源代码也可以自己百度下..

http://www.dbgger.com/?id=606

==========================================================================

代码我贴一下好了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值