首页
社区
课程
招聘
[原创]重载内核全程分析笔记
发表于: 2013-8-20 20:19 101128

[原创]重载内核全程分析笔记

2013-8-20 20:19
101128
收藏
免费 6
支持
分享
最新回复 (152)
雪    币: 39
活跃值: (158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
101
正学习内核重载呢,你的文章写得不错,通俗易懂,学习了
2013-11-5 15:10
0
雪    币: 263
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
102
不一定是ntkrnlpa.exe啊,非物理地址扩展的加载的另一个内核的
2013-11-24 13:31
0
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
103
入门的好教材,我要好好看看,一直在摸索。
2013-12-3 20:37
0
雪    币: 60
活跃值: (25)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
104
先来支持下楼主,周末有空看看
2013-12-17 23:19
0
雪    币: 112
活跃值: (201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
105
受益匪浅!同样的方法也可以加载win32k.sys的吗
2013-12-23 23:40
0
雪    币: 61
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
106
mark!
2013-12-26 22:14
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
107
很好的东西,学习。
2013-12-27 18:42
0
雪    币: 1484
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
108
支持一下大牛 了
2013-12-28 12:18
0
雪    币: 1484
活跃值: (1135)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
109
下了大牛的附件,原本想用内核重载来过XT工具。。用WDK生成,加载成功后还是不能用CE打开XT。。请问是什么原因,还有生成的内核驱动有两个警告。但可以用加载工具启动驱动。。具体使用办法能说详细点吗?
2013-12-28 12:48
0
雪    币: 458
活跃值: (306)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
110
重载内核的主要作用是用来过ssdt hook和一些inline hook,你打开XT会发现它并没有hook NtOpenProcess这个函数来防止你打开,据我推测它是用了一些隐藏技术。所以用重载内核来对付他是没用的。
2013-12-30 09:42
0
雪    币: 623
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
111
你这个还没进行导入函数绑定,如果用到 HAL 的函数,那就得挂了。
2013-12-30 09:45
0
雪    币: 29
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
112
mark ~感谢LZ的无私奉献!
2014-2-9 18:22
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
113
基址重定位这一小段不是特别理解,求助一下

一、我对重载内核的理解是,由于现在系统中有很多HOOK等东西,所以将系统的代码重新加载,让系统在新的内核代码上跑,这样就可以绕过其他软件的HOOK,让他以为HOOK仍然存在。

二、如果基于1的理解,那么新加载的内核的代码应该都是走新的代码流程,不应该去访问原来的代码。  而在贴中的第一张截图中, 新加载的createFile 与原来的CreateFile  在基址重定位后都访问了相同的地址。。这样如果这个地址被hook了,重载不就无效了吗?

2014-2-13 09:26
0
雪    币: 458
活跃值: (306)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
114
大概就是你说的那样了,基址重定位是因为手动load的内核模块不像开机启动的那样正常运行过,所以新内核模块的变量没有初始化,基址重定位的目的是将新内核中没有初始化的变量定位到老内核中去,这样才可以运行。
指定进程走新内核时,也只是把ssdt 表中的函数拿来执行,其它的没有用到。
2014-2-13 09:33
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
115
在重定位前   函数内部的RenameSequence 指令对应的十六进制分别是
8b1db80c5580

8d1db88c4700
但在重定位后。 都变成了

8b1db80c5580

8b1db80c5580

也就是将新加载的内核代码数据其实都改变了,也就是你讲的定位到老内核中去。

那我的理解是,能不能直接不使用老内核的代码。全部在新的上面跑?
2014-2-13 09:40
0
雪    币: 458
活跃值: (306)
能力值: ( LV12,RANK:400 )
在线值:
发帖
回帖
粉丝
116
是全部在新内核模块上跑呀,只不过是把变量的值拿过来用了。
2014-2-13 09:49
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
117
啊啊啊。我知道了。我笨了。 这行代码看的时候没注意。虽然看到的是mov . 结果心中想的是call....
2014-2-13 09:54
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
118
很好的文章,拜读!
2014-4-11 14:21
0
雪    币: 3110
活跃值: (143)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
119
过时的方法 其实可以干掉 杀软 然后在跳到我们们的中继函数里面 在跳回去 那样 就完美过掉
2014-4-12 02:01
0
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
120
支持楼主分享精神
2014-4-12 08:31
0
雪    币: 77
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
121
mark
2014-4-12 08:40
0
雪    币: 209
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
122
学习一下,但不知道怎么才能赚取大但MK
2014-5-14 15:05
0
雪    币: 18
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
123
楼主,你前面都重定位了,后面为啥还要修正ssdt->servicetable里的地址值?我现在的代码就不需要修正,只需要把ssdt->servicetable这个指针指到新的位置就行了
2014-7-1 00:04
0
雪    币: 27
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
124
通俗易懂,谢谢分享。。论坛因你更精彩。。
2014-7-4 21:43
0
雪    币: 6092
活跃值: (654)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
125
经过测试之后 发现系统兼容没有做..xp下非常成功,win7下测试失败.hook地址定位不到.
即使是 干净的系统 也提示 "pNewSSDT is unaviable!" 不知道为什么
2014-9-4 10:21
0
游客
登录 | 注册 方可回帖
返回
//