找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 60049|回复: 73

[原创开源]在Windows 7 x64上隐藏进程和保护进程(2010-11-10更新)

 火... [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-10-16 08:25:56 | 显示全部楼层 |阅读模式
实现隐藏进程和保护进程的手段依然是DKOM,不过是修改的位置不同而已。
至于怎么在64位操作系统上加载驱动,我已经说过了,请参考这里
驱动使用WDK7的x64 Free Build Environment编译。

核心源码:
#define PROCESS_FLAGS_OFFSET                   0x440
#define PROCESS_ACTIVE_PROCESS_LINKS_OFFSET    0x188
#define PROCESS_RUNDOWN_PROTECT_OFFSET         0x178


ULONG64 Get64bitValue(PVOID p)
{
    if(MmIsAddressValid(p)==FALSE)
        return 0;
    return *(PULONG64)p;
}

VOID Set64bitValue(PVOID p, ULONG64 v)
{
    KIRQL OldIrql;
    if(MmIsAddressValid(p)==FALSE)
        return ;
    OldIrql = KeRaiseIrqlToDpcLevel();
    *(PULONG64)p=v;
    KeLowerIrql(OldIrql);
}

VOID RemoveListEntry(PLIST_ENTRY ListEntry)
{
    KIRQL OldIrql;
    OldIrql = KeRaiseIrqlToDpcLevel();
    if (ListEntry->Flink != ListEntry &&
        ListEntry->Blink != ListEntry &&
        ListEntry->Blink->Flink == ListEntry &&
        ListEntry->Flink->Blink == ListEntry)
    {
            ListEntry->Flink->Blink = ListEntry->Blink;
            ListEntry->Blink->Flink = ListEntry->Flink;
            ListEntry->Flink = ListEntry;
            ListEntry->Blink = ListEntry;
    }
    KeLowerIrql(OldIrql);
}

VOID HideProcess(PEPROCESS Process)
{
    RemoveListEntry((PLIST_ENTRY)((ULONG64)Process + PROCESS_ACTIVE_PROCESS_LINKS_OFFSET));
}


VOID Test(ULONG uIoControlCode)
{
    switch(uIoControlCode)
    {
        case IOCTL_HideProcess:
            {
                __try
                {
                    memcpy(&dwInputPid,pIoBuffer,sizeof(dwInputPid));
                    status=PsLookupProcessByProcessId(dwInputPid,&eProcess);
                    if(NT_SUCCESS(status))
                    {
                        HideProcess(eProcess);
                    }
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                    ;
                }
                break;
            }
        case IOCTL_ProtectProcess:
            {
                __try
                {
                    memcpy(&dwInputPid,pIoBuffer,sizeof(dwInputPid));
                    status=PsLookupProcessByProcessId(dwInputPid,&eProcess);
                    if(NT_SUCCESS(status))
                    {
                        OldVal=Get64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_RUNDOWN_PROTECT_OFFSET));
                        Set64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_RUNDOWN_PROTECT_OFFSET),RdpVal);
                    }
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                    ;
                }
                break;
            }
        case IOCTL_UnprotectProcess:
            {
                __try
                {
                    Set64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_RUNDOWN_PROTECT_OFFSET),OldVal);
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                    ;
                }
                break;
            }
    }

}


2010-11-10更新内容:
#define PROCESS_ACTIVE_PROCESS_LINKS_OFFSET    0x188
#define PROCESS_FLAG2_OFFSET                   0x43C
#define CROSS_THREAD_FLAGS_OFFSET              0x448

VOID Test(ULONG uIoControlCode)
{
    switch(uIoControlCode)
    {
        case IOCTL_ProtectProcess:
            {
                __try
                {
                    memcpy(&dwInPid,pIoBuffer,sizeof(dwInPid));
                    dprintf("[x64Drv] dwInPid=%ld",dwInPid);
                    status=PsLookupProcessByProcessId(dwInPid,&eProcess);
                    if(NT_SUCCESS(status))
                    {
                        dwPOV=Get64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_FLAG2_OFFSET));
                        Set64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_FLAG2_OFFSET),dwPNV);
                        dprintf("[x64Drv] Protect Process finished");
                    }
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                    ;
                }
                break;
            }
        case IOCTL_ProtectThread:
            {
                __try
                {
                    memcpy(&dwInTid,pIoBuffer,sizeof(dwInTid));
                    dprintf("[x64Drv] dwInTid=%ld",dwInTid);
                    status=PsLookupThreadByThreadId(dwInTid,&eThread);
                    if(NT_SUCCESS(status))
                    {
                        dwTOV=Get32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET));
                        Set32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET),dwTNV);
                        dprintf("[x64Drv] Protect Thread finished");
                    }
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                    ;
                }
                break;
            }
        case IOCTL_UnprotectProcess:
            {
                __try
                {
                    Set64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_FLAG2_OFFSET),dwPOV);
                    Set32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET),dwTOV);
                    dprintf("[x64Drv] Unprotect Process and Thread finished");
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                    ;
                }
                break;
            }
        case IOCTL_PauseThrdProtect:
            {
                __try
                {
                    Set32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET),dwTOV);
                    dprintf("[x64Drv] Thread Protect Suspended!");
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                    ;
                }
                break;
            }
        case IOCTL_ResumeThrdProtect:
            {
                __try
                {
                    Set32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET),dwTNV);
                    dprintf("[x64Drv] Thread Protect Resumed!");
                }
                __except(EXCEPTION_EXECUTE_HANDLER)
                {
                    ;
                }
                break;
            }
    }
}

警告:此代码在没有破解内核的WIN7 X64上使用,会触发PatchGuard引起蓝屏。
Warning: If you use this code in WIN7 X64 without "crack kernel", it will trigger PatchGuard and cause BSOD.

Windows7x64_HideProcess_ProtectProcess.rar

651.57 KB, 阅读权限: 20, 下载次数: 68

售价: 10 水晶币  [记录]

Win7x64_ProtectProcess_20101110.rar

658 KB, 阅读权限: 20, 下载次数: 95

售价: 10 水晶币  [记录]

评分

参与人数 1水晶币 +10 收起 理由
阿杰 + 10

查看全部评分

6

主题

196

回帖

0

精华

铜牌会员

菜鸟

积分
52
发表于 2010-10-16 11:07:51 | 显示全部楼层
TE
本网站最菜的人 该用户已被删除
发表于 2010-10-16 13:04:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

90

主题

473

回帖

2

精华

钻石会员

积分
3261
发表于 2010-10-17 00:07:40 | 显示全部楼层
看看

1214

主题

352

回帖

11

精华

管理员

菜鸟

积分
93755

贡献奖关注奖人气王精英奖乐于助人勋章

发表于 2010-10-18 19:59:53 | 显示全部楼层
兄弟写的代码都是精品
【VB】QQ群:1422505加的请打上VB好友
【易语言】QQ群:9531809  或 177048
【FOXPRO】QQ群:6580324  或 33659603
【C/C++/VC】QQ群:3777552
【NiceBasic】QQ群:3703755

0

主题

74

回帖

0

精华

银牌会员

积分
436
发表于 2010-10-23 03:11:41 | 显示全部楼层
怎么附件不能下载啊

3

主题

3

回帖

0

精华

初来乍到

积分
5
发表于 2010-12-25 23:20:08 | 显示全部楼层
楼主好像年龄并不大啊:funk:
~O(∩_∩)O~

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-12-25 23:45:51 | 显示全部楼层
回复 wj8900930 的帖子

也不小了。。。

3

主题

3

回帖

0

精华

初来乍到

积分
5
发表于 2010-12-27 11:13:48 | 显示全部楼层
回复 wj8900930 的帖子

可真不容易,能回复了,5555555:victory:
~O(∩_∩)O~

0

主题

5

回帖

0

精华

初来乍到

积分
5
发表于 2011-1-12 07:39:55 | 显示全部楼层
可真不容易,能回可真不容易,能回可真不容易,能回
光爱哈赫 该用户已被删除
发表于 2011-1-14 22:01:25 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

0

主题

3

回帖

0

精华

初来乍到

积分
29
发表于 2011-2-10 22:24:01 | 显示全部楼层
经常有程序无缘无故关闭,需要第二个文件,但是没钱没权限:'(

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-2-10 22:26:30 | 显示全部楼层
回复 y44260351 的帖子

核心代码都贴出来了!!!

0

主题

3

回帖

0

精华

初来乍到

积分
29
发表于 2011-2-10 22:33:18 | 显示全部楼层
回复 Tesla.Angela 的帖子

我连汇编都不太行

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-2-10 23:28:15 | 显示全部楼层
回复 y44260351 的帖子

这跟汇编有什么关系

4

主题

7

回帖

0

精华

铜牌会员

积分
33
发表于 2011-5-2 18:14:50 | 显示全部楼层
但是没钱没权限

0

主题

2

回帖

0

精华

初来乍到

积分
8
发表于 2011-6-27 12:53:34 | 显示全部楼层
支持了,但是不能下载啊

0

主题

1

回帖

0

精华

初来乍到

积分
6
发表于 2011-7-11 15:52:02 | 显示全部楼层
很费解 怎么提升阅读权限···

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-7-11 16:14:06 | 显示全部楼层
572202700 发表于 2011-7-11 15:52
很费解 怎么提升阅读权限···

http://www.vbasm.com/thread-4478-1-1.html

0

主题

3

回帖

0

精华

初来乍到

积分
6
发表于 2011-9-8 07:58:33 | 显示全部楼层
可以隐藏进程了么?

0

主题

2

回帖

0

精华

初来乍到

积分
8
发表于 2011-9-23 13:25:52 | 显示全部楼层
谁下到了能用不!!发个给我,我下不了

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-9-23 13:37:31 | 显示全部楼层
2320806 发表于 2011-9-23 13:25
谁下到了能用不!!发个给我,我下不了

代码是我写的,你可以联系我付费购买。

0

主题

6

回帖

0

精华

初来乍到

积分
16
发表于 2011-9-29 18:36:07 | 显示全部楼层
楼主不错,正好找这个

0

主题

6

回帖

0

精华

初来乍到

积分
16
发表于 2011-9-29 18:36:27 | 显示全部楼层
阅读权限哪儿来的:loveliness:

0

主题

6

回帖

0

精华

初来乍到

积分
16
发表于 2011-9-29 18:36:38 | 显示全部楼层
还要积分啊

0

主题

6

回帖

0

精华

初来乍到

积分
16
发表于 2011-9-29 18:36:49 | 显示全部楼层
:$还要水晶币

0

主题

6

回帖

0

精华

初来乍到

积分
16
发表于 2011-9-29 18:37:03 | 显示全部楼层
好多哦买卖打死

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2011-9-29 19:12:50 | 显示全部楼层
zgzg15 发表于 2011-9-29 18:37
好多哦买卖打死

需要的话,可以自己用技术换取,也可以花钱购买。

0

主题

6

回帖

0

精华

初来乍到

积分
8
QQ
发表于 2011-10-19 10:43:37 | 显示全部楼层
谢谢分享 我会努力滴

0

主题

6

回帖

0

精华

初来乍到

积分
8
QQ
发表于 2011-10-19 10:45:12 | 显示全部楼层
膜拜

0

主题

6

回帖

0

精华

初来乍到

积分
8
QQ
发表于 2011-10-19 10:45:26 | 显示全部楼层
不给下啊

0

主题

6

回帖

0

精华

初来乍到

积分
8
QQ
发表于 2011-10-19 10:45:37 | 显示全部楼层
需要的话,可以自己用技术换取,也可以花钱购买。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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