首页
社区
课程
招聘
[求助]关于内核重载一个不解的地方
发表于: 2014-11-26 08:49 5598

[求助]关于内核重载一个不解的地方

2014-11-26 08:49
5598
按我的理解,内核重载就是把NTOSKRNL.EXE读入,然后初始化映像,修复导入表,修复重定位表。但是感觉很多重要数据都没有初始化(DriverEntry应该没有被执行)。为什么调用新内核的API可以成功呢?我近日按照自己的理解重写了一份,发现执行字符串类API可以成功,执行系统相关API(比如NtCreateKey)就是失败。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1392
活跃值: (5107)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
修复重定位表并不是按照你的新内核的加载位置重定位,而是按照老的内核的位置重定位,这样定位下来的全局变量都是老的初始化以后的。重载只是为了利用代码段而已。
2014-11-26 08:57
0
雪    币: 3
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢你,知道原因了,已设置为最佳答案!本帖结束。
2014-11-26 09:06
0
雪    币: 3
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这么说的话,重载后虽然老内核里的INLINE HOOK无效了,但是用回调(比如注册表回调)的拦截依然有效,对吧?
2014-11-26 10:07
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
回调函数的保存位置其实就是一个数组,既然是数据,那么按原基址重定位的话,数据依然是有效的,所以回调拦截依然有效~  要想解决这个问题,可以针对性地对这些数据定向到新的内核里,这样原来的回调就全作废了
2014-11-26 12:22
0
雪    币: 3263
活跃值: (3853)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
这样做感觉重载内核意义不大啊,全都重定位到老内核,怕是连代码都用的是老内核的。
2019-7-21 16:40
0
雪    币: 3263
活跃值: (3853)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
分析一下PE重定位表发现相当一部分线性地址都是指向可执行的代码区,这不还是用了老内核的代码吗?
最后于 2019-7-21 16:42 被Mr.hack编辑 ,原因:
2019-7-21 16:40
0
游客
登录 | 注册 方可回帖
返回
//