首页
社区
课程
招聘
[求助]内存清零杀进程代码谁给注释下
发表于: 2009-7-15 16:16 6192

[求助]内存清零杀进程代码谁给注释下

2009-7-15 16:16
6192
一段强行结束进程的代码
// 先往指定进程内存区域写 0 ,然后再灭掉......
void DestroyProcess( DWORD eproc)
{
   DWORD                VirtualAddr;
   PHYSICAL_ADDRESS    physical_addr;
   DWORD                AddrTmp;
   PVOID                ProcessHandle;

   KeAttachProcess( (PEPROCESS)eproc );   //这句做什么的??
   for ( VirtualAddr = 0x1000; VirtualAddr < *(DWORD*)MmSystemRangeStart; VirtualAddr+=0x1000)  //0x1000??
   {
       // 跳过不再内存里的
       physical_addr = MmGetPhysicalAddress( (PVOID)VirtualAddr);
       if ( physical_addr.HighPart > g_PhysicalPage.HighPart )
           continue;
       if ( physical_addr.HighPart == g_PhysicalPage.HighPart &&
            physical_addr.LowPart >= g_PhysicalPage.LowPart   )
           continue;
       if ( (physical_addr.HighPart | physical_addr.LowPart) == 0 )
           continue;
       AddrTmp = (DWORD)MmGetVirtualForPhysical( physical_addr);
       if ( AddrTmp != VirtualAddr)
           continue;
       DisableWPBitAndCli();
       RtlZeroMemory( (PVOID)VirtualAddr, 0x1000);
       RELoadCR0AndSti();
   }
   KeDetachProcess();

   if ( ObOpenObjectByPointer( (PVOID)eproc, 0, NULL, 0, NULL, KernelMode, &ProcessHandle) != STATUS_SUCCESS)
       return;
   ZwTerminateProcess( (HANDLE)ProcessHandle, STATUS_SUCCESS);
   ZwClose( (HANDLE)ProcessHandle );
   return;
}
内存清零原理??

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
2
内存清零现在跟肥猪一样泛滥了
2009-7-15 16:19
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
驱动不是白菜了么
2009-7-15 17:00
0
雪    币: 709
活跃值: (2420)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
4
是的...
2009-7-15 19:15
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
5
是的  但是我不会啊
2009-7-15 22:15
0
雪    币: 170
活跃值: (90)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
6
/进程虚拟空间填0
void DestoryProcessWithZero(ULONG eprocess)
{
   ULONG virtualAddr;
   PVOID handle;
   KeAttachProcess((PEPROCESS)eprocess);  //Attach进程虚拟空间
   for(virtualAddr=0;virtualAddr<7fffffff;virtualAddr+=0x1000)
   {  
      RtlZeroMemory((PVOID)virtualAddr,0x1000);//填0
   }
   KeDetachProcess();
   if(ObOpenObjectByPointer((PVOID)eproc, 0, NULL, 0, NULL, KernelMode, &handle)!=STATUS_SUCCESS)
       return;
   ZwTerminateProcess( (HANDLE)handle, STATUS_SUCCESS);
   ZwClose( (HANDLE)handle );
}
这样写不知道对不对??
2009-7-16 21:54
0
游客
登录 | 注册 方可回帖
返回
//