首页
社区
课程
招聘
[旧帖] [原创]对 Hook 内核ntoskrnl'sZwQuerySystemInformation隐藏任务管理器进程名 的彻底完善 0.00雪花
2010-2-8 11:52 3156

[旧帖] [原创]对 Hook 内核ntoskrnl'sZwQuerySystemInformation隐藏任务管理器进程名 的彻底完善 0.00雪花

2010-2-8 11:52
3156
前段时间总结了枚举系统进程的N种方法,属于科普类读物。链接如下:
http://bbs.pediy.com/showthread.php?p=758997#post758997
这几天想针对上面的枚举方法,隐藏进程。首先实现的就是SSDT Hook ZwQuerySystemInfor实现进程隐藏,这已经是一项很老的技术了。
qiweixue 在他的文章里面写的很清楚:
http://bbs.pediy.com/showthread.php?t=36742&highlight=%E9%9A%90%E8%97%8F+%E8%97%8F%E8%BF%9B+%E8%BF%9B%E7%A8%8B
这篇文章有点小错误,在sislcb的【原创】对 Hook 内核ntoskrnl'sZwQuerySystemInformation隐藏任务管理器进程名 的一点完善 文章中进程了完善,链接如下:
http://bbs.pediy.com/showthread.php?t=56830但我在实现的时候,发现sislcb的这篇文章也存在一下小失误。主要是:隐藏进程在信息开头时,未处理好,他的处理代码如下:
if(prev)
            {
              //要删除的信息在中间,则把指针指向下一个节点
              if(curr->NextEntryDelta)
                prev->NextEntryDelta += curr->NextEntryDelta;
              else
                prev->NextEntryDelta = 0; //要删除的信息在末尾,则直接把指针指向0
            }
            else
            {
              if(curr->NextEntryDelta)       //这个地方处理错误
                (char *)SystemInformation += curr->NextEntryDelta; //要删除的信息在开头
         else
                SystemInformation = NULL;
            }
虽然不是什么大错误,也不影响作者想隐藏自己的进程,因为一般信息开头是Idle进程。但为了让程序更加健全,小弟将该处的错误以及更正方式,贴出来。以便大家对这个技术有个全面的掌握。
    错误的原因是,SystemInformation是个指针变量,在内部改变它的值并不影响外部,我们在函数内部只能改变它指向的内容。呵呵,很基本的C知识吧。但却常常被人忽略。所以作者上面的改变方式,对SystemInformation值没任何影响。具体方法应该是:
ULONG len = sizeof( SystemProcessInformation );
ULONG uOffet = ((PSystemProcessInformation)SystemInformation)->NextEntryDelta;
pCur = (PSystemProcessInformation)((ULONG)pCur + pCur->NextEntryDelta);
memcpy( SystemInformation, pCur, len );
((PSystemProcessInformation)SystemInformation)->NextEntryDelta += uOffet;
我实现的代码见附件
HookZwQuerySystemInformation.rar

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞7
打赏
分享
最新回复 (4)
雪    币: 197
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
刘福辉 2010-2-12 12:14
2
0
好东西,收藏了  
  谢谢
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
weeklemon 2010-2-13 17:47
3
0
来学习一下。收藏一个,谢谢啊
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
alaiyj 2010-3-31 19:18
4
0
c语言,很值得学习。
雪    币: 110
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Elele 2010-4-18 21:52
5
0
支持一下
游客
登录 | 注册 方可回帖
返回