首页
社区
课程
招聘
[求助]Hook ZwCreateSection蓝屏 请大侠指点
发表于: 2009-9-7 16:24 5369

[求助]Hook ZwCreateSection蓝屏 请大侠指点

2009-9-7 16:24
5369
typedef  NTSTATUS  (*PMyZwCreateSection)(
                                OUT PHANDLE  SectionHandle,
                                IN ACCESS_MASK  DesiredAccess,
                                IN POBJECT_ATTRIBUTES  ObjectAttributes ,
                                IN PLARGE_INTEGER  MaximumSize ,
                                IN ULONG  SectionPageProtection,
                                IN ULONG  AllocationAttributes,
                                IN HANDLE  FileHandle
                                );  

static PMyZwCreateSection g_old_section = NULL;

static  NTSTATUS  MyZwCreateSection(OUT PHANDLE  SectionHandle,
                                                                                           IN ACCESS_MASK  DesiredAccess,
                                                                                           IN POBJECT_ATTRIBUTES  ObjectAttributes ,
                                                                                           IN PLARGE_INTEGER  MaximumSize ,
                                                                                           IN ULONG  SectionPageProtection,
                                                                                           IN ULONG  AllocationAttributes,
                                                                                           IN HANDLE  FileHandle )
{

        KdPrint(("ZwCreateSection Call..."));
        //__asm jmp g_old_section
        return (*g_old_section)(
                SectionHandle,
                DesiredAccess,
                ObjectAttributes,
                MaximumSize,
                SectionPageProtection,
                AllocationAttributes,
                FileHandle);
}

NTSTATUS HookOrUnHook(BOOLEAN bHook)
{
        UNICODE_STRING functionname;
        UCHAR *address = NULL;

        RtlInitUnicodeString(&functionname,L"ZwCreateSection");

        address = MmGetSystemRoutineAddress(&functionname);
        if (address == NULL)
        {
                return STATUS_UNSUCCESSFUL;
        }

        if (bHook)
        {
                g_old_section = (PMyZwCreateSection)(*(PLONG)(address + 2));
                InterlockedExchange((PLONG)(address + 2),MyZwCreateSection);
                return STATUS_SUCCESS;
        }
        else
        {
                if (g_old_section != NULL)
                {
                        InterlockedExchange((PLONG)(address + 2),g_old_section);
                        return STATUS_SUCCESS;
                }
                return STATUS_UNSUCCESSFUL;
        }
}

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
菜鸟很寂寞 高手请指点
2009-9-7 16:41
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
scm
3
我听别人说的是高手一般很寂寞.....呵呵
2009-9-7 16:56
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
4
晕……
InterlockedExchange((PLONG)(address + 2),MyZwCreateSection);
你替换ZwCreateSection函数体里的指令干嘛……
2009-9-7 16:59
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
明白了
2009-9-7 17:05
0
游客
登录 | 注册 方可回帖
返回
//