查看: 18939|回复: 40
收起左侧

[原创文章] 不HOOK任何函数,让任务管理器、XueTr、360进程管理器无法结束保护进程

  [复制链接]
KiDebug
发表于 2011-5-29 16:05:32 | 显示全部楼层 |阅读模式
【提示】能加驱动进内核,就没必要弄EXE了,所以我个人觉得没啥实际用途,仅供观看

Windows会给每一个进程建立一个EPROCESS结构,给每一个线程建立ETHREAD结构,EPROCESS结构第一个成员是KPROCESS结构,ETHREAD结构第一个成员是KTHREAD结构。每个进程的线程的ETHREAD结构都会按下图所示链接起来:
60d98a2921ca89641e3089af.jpg.png
里面有两条链表。通过遍历这两条链表,可以得到一个进程所有的线程。Windows在执行线程调度时,不会去管这两条链表。只有当新建一个线程时,会加入到链表中,一个线程退出时,会从链表中移除。

如果在EPROCESS中将这两条链表置空,会发生什么事呢?



以下是验证步骤:

【注意】请先关闭360安全卫士,以免加载驱动时提示。驱动代码中用了一堆的硬编码,所以请确保操作系统为Windows XP SP3 中文版,否则可能蓝屏。

1.编译以下代码为haha.exe

/*
* 【作者:KiDebug】
* 【空间:http://hi.baidu.com/KiDebug/
*/

#include <Windows.h>

int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow)
{
    while (1)
    {
        MessageBoxA(NULL,"关不了,气死你!~","哈哈!~",MB_OK);
    }
    return 0;
}



双击打开haha.exe,它会不断地调用MessageBox弹出对话框,此时任务管理器、XueTr、360进程管理器都可以结束haha.exe

2.确保haha.exe可以弹出对话框,然后再编译以下代码为ProtectHaha.sys,利用InstDrv.exe加载ProtectHaha.sys,依次点击安装、启动、停止、卸载

/*
* 【作者:KiDebug】
* 【空间:http://hi.baidu.com/KiDebug/
*/

#include <ntddk.h>

void DriverUnload(IN PDRIVER_OBJECT DriverObject)
{
}

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING  RegistryPath)
{
    __asm
    {
        mov ebx,PsInitialSystemProcess
        mov ebx,[ebx]
        lea ebx,[ebx+88h]               //+0x088 ActiveProcessLinks : _LIST_ENTRY
L1:     mov ebx,[ebx]                   //遍历ActiveProcessLinks,找haha.exe的EPROCESS
        cmp dword ptr [ebx+0ECh],61686168h
        jnz L1
        cmp dword ptr [ebx+0F0h],6578652eh      //68 61 68 61 2e 65 78 65 haha.exe
        jnz L1

        //88h、50h、190h、194h都是硬编码,适用于Windows XP SP3
        lea ebx,[ebx-88h]               //EBX为haha.exe的EPROCESS
        lea eax,[ebx+50h]               //nt!_KPROCESS
        mov [ebx+50h],eax               //+0x050 ThreadListHead : _LIST_ENTRY
        mov [ebx+54h],eax               //置为空链
        lea eax,[ebx+190h]              //nt!_EPROCESS
        mov [ebx+190h],eax              //+0x190 ThreadListHead : _LIST_ENTRY
        mov [ebx+194h],eax              //置为空链
    }

    DriverObject->DriverUnload = DriverUnload;
    return STATUS_SUCCESS;
}


3.打开任务管理器,选中haha.exe,点击“结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;
4.打开XueTr,在“进程”窗口中选中haha.exe按右键,点击“结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;刷新,再次右键,点击“强制结束进程”,haha.exe无法结束,仍然可以不停地弹对话框;
5.打开360安全卫士(8.0.0.2001),启动“功能大全”里面的“进程管理器”,选中haha.exe,点击“关闭程序”,haha.exe无法结束,仍然可以不停地弹对话框;

【注意】
1.有可能点击对话框右上角的关闭按钮后,haha.exe会假死。这时先随便点下桌面或其他什么地方,再点对话框的“确定”按钮,就又活过来了。
2.如果要应用到其他进程上,请确保驱动启动后这个进程不会新建线程,否则“强制结束进程”可以结束掉新建线程,可能会造成进程假死。
3.haha.exe中只有一个线程,对于其他进程,在EPROCESS中将两条链表置空后需要将链表中第一个线程和最后一个线程的ThreadListEntry链接起来。
4.对于其他进程,置空链表时需要考虑同步问题。

如何结束haha.exe呢?
在XueTr“进程”窗口中选中haha.exe按右键,点击“查看进程线程”,把看到的线程全部结束即可。
WS点可以把线程栈空间设小点,然后创建成百上千个线程……

评分

参与人数 2经验 +15 人气 +1 收起 理由
老人家 + 1
边缘vip + 15 感谢提供分享,支持技术讨论

查看全部评分

z2665
发表于 2011-5-29 16:28:50 | 显示全部楼层
继续支持。。
之前在看雪都看到了
FreeEquFraT
发表于 2011-5-29 19:21:03 | 显示全部楼层
楼主能不能编译一下让我等菜鸟玩一下,只有代码的话实在是只能站旁边看了
m_direction
发表于 2011-5-29 19:29:41 | 显示全部楼层
围观下
gxrsprite
头像被屏蔽
发表于 2011-5-29 21:17:31 | 显示全部楼层
本帖最后由 gxrsprite 于 2011-5-29 21:21 编辑

摘除EPROCESS隐藏进程?隐藏线程链?
KiDebug
 楼主| 发表于 2011-5-29 22:21:55 | 显示全部楼层
本帖最后由 KiDebug 于 2011-5-30 15:59 编辑
FreeEquFraT 发表于 2011-5-29 19:21
楼主能不能编译一下让我等菜鸟玩一下,只有代码的话实在是只能站旁边看了


ProtectHaha.sys会被360杀毒报为Malware.QVM00.Gen,如有担心,请在虚拟机中测试
请先关闭360安全卫士,以免加载驱动时提示。驱动代码中用了一堆的硬编码,所以请确保操作系统为Windows XP SP3 中文版,否则可能蓝屏。

【建议在虚拟机中测试】

1.双击打开haha.exe,它会不断地调用MessageBox弹出对话框,此时任务管理器、XueTr、360进程管理器都可以结束haha.exe
2.在打开haha.exe的情况下,利用InstDrv.exe加载ProtectHaha.sys,依次点击安装、启动、停止、卸载
3.尝试用任务管理器、XueTr、360进程管理器、IceSword、Wsyscheck、PowerTool、rku结束haha.exe进程
4.rku的“Force Kill”虽然不会结束haha.exe进程,但会让haha.exe失去响应,停止弹对话框,所以rku放在最后测试。
5.有可能点击对话框右上角的关闭按钮后,haha.exe会假死。这时先随便点下桌面或其他什么地方,再点对话框的“确定”按钮,就又活过来了。

如何结束haha.exe
在XueTr“进程”窗口中选中haha.exe按右键,点击“查看进程线程”,把看到的线程全部结束即可。
haha.rar (2.24 KB, 下载次数: 388)

评分

参与人数 2人气 +2 收起 理由
liulangzhecgr + 1 好玩!
FreeEquFraT + 1 非常感谢~~~

查看全部评分

winnarsun
发表于 2011-5-30 03:53:58 | 显示全部楼层
KiDebug 发表于 2011-5-29 22:21
ProtectHaha.sys会被360杀毒报为Malware.QVM00.Gen,如有担心,请在虚拟机中测试
请先关闭360安全卫士, ...

和红伞的sched.exe
出现数次复活?
KiDebug
 楼主| 发表于 2011-5-30 09:18:49 | 显示全部楼层
winnarsun 发表于 2011-5-30 03:53
和红伞的sched.exe
出现数次复活?

打开任务管理器,切换到“进程”,点击菜单里面的“查看”->“选择列”,勾住“PID(进程标识符)”,点确定。

如果是死后复活,那么PID是不同的。
网络安全
发表于 2011-5-30 09:40:02 | 显示全部楼层
支持技术讨论,建议加技术值。
kingcom
发表于 2011-5-30 13:01:15 | 显示全部楼层
//68 61 68 61 2e 65 78 65 haha.exe
请问楼主这是什么?怎么才能看到红色标记的数值?
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-4-3 18:39 , Processed in 0.170976 second(s), 20 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表