首页
社区
课程
招聘
[旧帖] [原创]Ring3转入Ring0跟踪 0.00雪花
2013-7-2 17:20 5602

[旧帖] [原创]Ring3转入Ring0跟踪 0.00雪花

2013-7-2 17:20
5602
新手学习过程记录,大牛飘过
通过反汇编跟踪一个API函数从Ring3层到Ring0层的具体执行过程,有助于我们加深对相关内核Hook技术的理解。

我们可以使用OD打开notepad.exe程序,对CreateFileW下断后,可以发现,有这样一行代码:
CALL DWORD PTR DS:[<&ntdll.NtCreateFile>>; ntdll.ZwCreateFile  
也就是说,CreateFileW(Win32API)实际上是调用了ntdll中的NtCreateFile(或ZwCreateFile)函数。
使用微软自带的Dependency工具查看ntdll中的NtCreateFile和ZwCreateFile函数,可以发现,两个函数的入口地址是一样的,也就是说,两个函数可以看成是同一个函数。

继续反汇编跟踪,可以发现NtCreateFile调用了如下函数:
MOV EAX,25    //SSDT表索引号,对应的十进制=37  
MOV EDX,7FFE0300  
CALL DWORD PTR DS:[EDX]  
RETN 2C  
继续反汇编,我们发现CALL DWORD PTR DS:[ 7FFE0300 ]实际上是调用了ntdll.KiFastSystemCall,反汇编窗口中跟随KiFastSystemCall,便有了如下几行代码:
MOV EDX,ESP  
SYSENTER  
RETN  
通过调用SysEnter(软件中断)指令,Windows系统将会捕获这个调用,然后进入Ring0层,并调用内核服务函数NtCreateFile。
在进入Ring0层之后,操作系统会根据索引号(eax的值)在系统服务描述表中查找对应的表项,比如,通过Kernel Detective可以知道SSDT表中,索引号为37对应的服务名为NtCreateFile,当前地址为:0x80574E0B,

系统会根据这个地址调用相应的系统服务函数,并把结果返回给ntdll.dll中的 NtCreateFile 。

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

收藏
点赞3
打赏
分享
最新回复 (15)
雪    币: 29414
活跃值: (18625)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2013-7-3 20:10
2
0
你的kx够了,可以买邀请码转为正式会员了。
雪    币: 268
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
邓韬 9 2013-7-3 20:25
3
0
第一次看见老大这么小气.
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
怪人 2013-7-4 04:15
4
0
..他是临时工。老大是想他转正/。。大雪非编制公务员
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
oihonewbie 2013-7-4 08:26
5
0
nice tools, just downloaded
雪    币: 434
活跃值: (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zyicai 2013-7-4 08:42
6
0
很清晰,很明了
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marsliudd 2013-7-4 09:32
7
0
mark,有用
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
marsliudd 2013-7-4 09:52
8
0
mark
雪    币: 1042
活跃值: (455)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Rookietp 2013-7-4 10:17
9
0
mark~ 肯定有用。
雪    币: 267
活跃值: (438)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
linziqingl 4 2013-7-4 18:03
10
0
其实我更关心进入内核里的第一条指令到NtCreateFile函数入口之间的这段汇编指令,因为这段代码可以被任何进程的线程运行。
雪    币: 216
活跃值: (42)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
卧龙 2013-7-5 09:21
11
0
很简单明了的教程,很适合初学者。
雪    币: 89
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
swlilike 2013-7-5 17:56
12
0
通熟易懂,赞一个
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
非洲小白脸 2013-12-23 14:12
13
0
MARK一下
雪    币: 100
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
anglehua 2013-12-23 14:51
14
0
mark
雪    币: 77
活跃值: (48)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cqzj70 2014-4-18 20:45
15
0
MARK
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
学淘吧 2014-4-18 22:27
16
0
看到每个帖子,都觉得亲切,对于一个新手来说,这是学习的机会
游客
登录 | 注册 方可回帖
返回