首页
论坛
课程
招聘
[原创]重载内核新方法,避免SEH导致的蓝屏(不hook链表)
2014-11-3 14:11 8997

[原创]重载内核新方法,避免SEH导致的蓝屏(不hook链表)

2014-11-3 14:11
8997
RT。
虽说重载内核已不是什么新鲜东西,但是看到各位还是在用动态加载的方法来把内核加载进内存里,因为内存池无法加载SEH,所以如果调用函数有抛出异常,会蓝屏。
最近我试验了一个新方法,就是直接把内核文件作为普通驱动加载到系统。
代码粗鄙不堪,我就不放出来了,相信各位看了也会自己写出来。

首先,找到当前系统的内核文件,相信很多朋友都试过直接加载,结果会导致重启,这是因为入口函数的作用,所以我们可以自己写一个空函数体的汇编代码覆盖进去OEP。
再而,修复characteristic为102,还有再修复checksum,这样内核就能加载了,不重启。
然后,用一个驱动修复重定位表,根据重定位表把内核中的全局定位到原内核,并找到driverobject添加卸载函数,就可以正常卸载了,这样一个崭新的内核就出来了,而且不会蓝屏哟!

[培训] 优秀毕业生寄语:恭喜id咸鱼炒白菜拿到远超3W月薪的offer,《安卓高级研修班》火热招生!!!

收藏
点赞0
打赏
分享
最新回复 (16)
雪    币: 2812
活跃值: 活跃值 (271)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
sidyhe 活跃值 1 2014-11-3 14:15
2
0
赞一个!
雪    币: 604
活跃值: 活跃值 (369)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Morgion 活跃值 1 2014-11-3 14:25
3
0
好猥琐的办法~
借助操作系统的PELoader来做加载,完成其他的一些任务~不错~
雪    币: 255
活跃值: 活跃值 (18)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
AioliaSky 活跃值 1 2014-11-3 14:47
4
0
32位内核文件 OEP 改
xor eax,eax //返回STATUS_SUCCESS
ret 8
再重新计算文件校验和填充即可
雪    币: 3
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ngdik 活跃值 2014-11-3 14:51
5
0
没错,就是这样
雪    币: 604
活跃值: 活跃值 (369)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Morgion 活跃值 1 2014-11-3 15:19
6
0
不如注册一个ImageLoadNotify,在Notify里修改OEP,指向到你的SYS里,这样就可以在你的SYS里获取到内核文件的DriverObject,设置卸载例程。这样做就可以免去修正CheckSum的问题了
雪    币: 3
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ngdik 活跃值 2014-11-3 15:23
7
0
我直接用ObReferenceObjectByFileName获取,然后卸载,不需要注册
雪    币: 470
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cnxxm 活跃值 2014-11-3 16:18
8
0
原来可以这样啊,这不好简单啊
雪    币: 7506
活跃值: 活跃值 (298)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
achillis 活跃值 15 2014-11-3 19:24
9
0
思路很好,赞一个
雪    币: 8670
活跃值: 活跃值 (776)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
cvcvxk 活跃值 10 2014-11-3 20:48
10
0
好思路~
雪    币: 2354
活跃值: 活跃值 (424)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
枫清淡 活跃值 2014-11-3 21:12
11
0
好棒的思路!
雪    币: 95
活跃值: 活跃值 (44)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
shenchiyua 活跃值 2014-12-12 23:45
12
0
nt和win32k都是这么搞的么,楼Z
雪    币: 616
活跃值: 活跃值 (931)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
小希希 活跃值 2014-12-20 20:03
13
0
因为内存池无法加载SEH,所以如果调用函数有抛出异常,会蓝屏

这个问题我重载内核没遇到过,SEH肯定有用,也会触发,没发现有蓝屏问题

重载个PE文件很简单,重定位,输入表处理下就行了,估计难的是大家都再内核里重载,我是r3重载好了给内核
雪    币: 31
活跃值: 活跃值 (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
MaMy 活跃值 2014-12-22 21:36
14
0
么么哒,说好的双头龙呢
雪    币: 10
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
virt 活跃值 2014-12-22 22:59
15
0
xpsp3下
Kernel base = 0x804d8000 PsLoadedModuleList = 0x8055e720

lkd> u NtReadVirtualMemory
nt!NtReadVirtualMemory:
805b528a 6a1c            push    1Ch
805b528c 68e8ae4d80      push    offset nt!MmClaimParameterAdjustDownTime+0x90 (804daee8)
805b5291 e8ea78f8ff      call    nt!_SEH_prolog (8053cb80)
805b5296 64a124010000    mov     eax,dword ptr fs:[00000124h]
805b529c 8bf8            mov     edi,eax
805b529e 8a8740010000    mov     al,byte ptr [edi+140h]
805b52a4 8845e0          mov     byte ptr [ebp-20h],al
805b52a7 8b7514          mov     esi,dword ptr [ebp+14h]
lkd> u A43FF000+805b528a-804d8000
a44dc28a ??              ???
                                 ^ Memory access error in 'u A43FF000+805b528a-804d8000 '
A43FF000为新加载的驱动基地址
为什么 ?????
雪    币: 23
活跃值: 活跃值 (126)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
karennel 活跃值 2015-1-22 19:59
16
0
耗掉。。。。。
雪    币: 87
活跃值: 活跃值 (361)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
编程小白 活跃值 2018-1-18 12:41
17
0
游客
登录 | 注册 方可回帖
返回