首页
社区
课程
招聘
[原创]简单重载内核的方法
发表于: 2015-2-16 23:40 9967

[原创]简单重载内核的方法

2015-2-16 23:40
9967
win7 32位测试
一启动就加载这个驱动,360那个hookpoint.sys会改内核,直接复制会蓝屏 先把hookpoint.sys搞了,我直接删了360

(全局)BYTE reload[内核文件的大小];//这样没用内存池应该不会出现safeseh的问题

PMDL g_pMdl = NULL;
PULONG g_pMdlTable = NULL;

NTSTATUS WriteSSDT_On(ULONG add,ULONG size)
{
        g_pMdl = IoAllocateMdl(add, size, FALSE, FALSE, NULL);
        if (!g_pMdl)        return STATUS_UNSUCCESSFUL;

        MmBuildMdlForNonPagedPool(g_pMdl);
        g_pMdl->MdlFlags  |= MDL_MAPPED_TO_SYSTEM_VA;
        g_pMdlTable = (PULONG)MmMapLockedPagesSpecifyCache(g_pMdl, KernelMode, MmNonCached, NULL, FALSE, NormalPagePriority);
        if (!g_pMdlTable)
        {
                IoFreeMdl(g_pMdl);
                return STATUS_UNSUCCESSFUL;
        }

        return STATUS_SUCCESS;
}

VOID WriteSSDT_Off()
{
        MmUnmapLockedPages(g_pMdlTable, g_pMdl);
        IoFreeMdl(g_pMdl);
}
DriverEntry:
(
ULONG add,size;
        if(MyEnumKernelModule("\\SystemRoot\\System32\\ntkrnlpa.exe",&add,&size)==-1)//获取内核地址(我的内核文件是这个)
{
return -1;
}
       WriteSSDT_On(add,size);
       memcpy(reload,(ULONG*)add,size);//复制内核到reload,直接复制的,不用重定位
        WriteSSDT_Off();
      然后ssdt表每个加上偏移(reload-add)就行了(当然你要保证ssdt恢复了,qqprotect.sys我是删了的)
.
.
.
.
)
不是很稳定(开网页就蓝屏,不开网页到没事)
反正蓝屏就是0x0000000fc(3,xxx,xx,xx)
各位麻烦帮我看下原因哈

[课程]Android-CTF解题方法汇总!

收藏
免费 3
支持
分享
最新回复 (18)
雪    币: 207
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
LZ是高手啊~
2015-2-17 09:49
0
雪    币: 101
活跃值: (29)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
醉了。。。碉堡了
2015-2-17 12:37
0
雪    币: 6124
活跃值: (4476)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
4
碉堡了!!!
2015-5-5 17:16
0
雪    币: 719
活跃值: (777)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
5
简直吊。。。
2015-5-5 17:24
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
哪里吊?
2015-5-6 10:07
0
雪    币: 995
活跃值: (669)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
一堆莫名其妙的人 莫名其妙的话
2015-5-6 12:23
0
雪    币: 44
活跃值: (186)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
什么的情况,请问
2015-5-6 20:59
0
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
我上来就先问一个问题,你确认你定义的那个全局数组的起始地址是4KB对齐的吗?
2015-5-6 21:37
0
雪    币: 96
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
这样就不会蓝了?
2015-5-7 12:12
0
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
再问一个问题,文件内存对齐了吗?
再问一个问题,处理重定位了吗?
再问一个问题,填充IAT了吗?
2015-5-7 22:39
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
memcpy(reload,(ULONG*)add,size);我了个擦,这都行,吊,360的小伙伴肯定都吓尿了,哈哈哈
2015-5-8 10:43
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我替楼主回答一下,第一个问题:像这么大块的内存申请,一般pool都自动对齐的,
第三个问题:由于是copy的iat自然导入,不用管
第二个问题:就是个他蓝屏的根本原因
打完收工。
2015-5-8 10:54
0
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
他那个拷贝到的目标是一个全局数组,在data段,那个可以保证4K对齐?
2015-5-8 16:18
0
雪    币: 96
活跃值: (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
直接复制不就重定位了么

[xx] 还在原内核
2015-5-8 17:28
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
跟段有啥关系?只要审请的pool是0xXXXXX000的四k对齐就一定会是对齐的。
2015-5-8 20:50
0
雪    币: 23
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
[QUOTE=shenchiyua;1369749]直接复制不就重定位了么

[xx] 还在原内核[/QUOTE]

我有点醉了,请仔细看重定位相关资料.relocation是个Rva,R代表相对,相对是啥不用再讲了吧,真的醉了,我很喜欢你,哥哥,真的,留个电话我找你去
2015-5-8 20:53
0
雪    币: 608
活跃值: (643)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
18
你看清他的reload是啥。。。不是pool,是个数组
2015-5-10 16:46
0
雪    币: 26
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
厉害
2018-10-22 20:56
0
游客
登录 | 注册 方可回帖
返回
//