码迷,mamicode.com
首页 > 其他好文 > 详细

分析 kernel32.dll中函数调用流程分析

时间:2016-04-19 16:57:39      阅读:765      评论:0      收藏:0      [点我收藏+]

标签:

闲来无事,用IDA, windbg, OD分析kernel32.dll函数调用流程笔记

 

1.先用分析 CreateFileW,CreateFileA 函数:


CreateFileA流程:

kernel32.dll!CreateFileA 流程
kernel32.dll!Basep8BitStringToDynamicUnicodeString
kernel32.dll!CreateFileWImplementation ; 实际就是导出表 CreateFil 地址
kernel32.dll!RtlFreeUnicodeString

 

kernel32.dll!CreateFileWImplementation 流程
ds:RtlInitUnicodeStringEx
BaseIsThisAConsoleName
API-MS-Win-Core-File-L1-1-0.CreateFileW ; 实际就是导入表 CreateFileW 地址

 

API-MS-Win-Core-File-L1-1-0.CreateFileW 流程
ntdll.dll!zwCreateFile
ntdll.dll!KiFastSystemCall
sysenter ;sysenter指令切入内核

1. 调用 CreateFileA后 会转换成UNICODE版本, 然后直接调用CreateFileW (CreateFileW的导出表地址)
2. 然后在调用 CreateFileW(CreateFileW的导入表地址, API-MS-Win-Core-File-L1-1.dll个人理解为转换层)
3. 导入表CreateFileW才是函数的实现, 继续调用
a. ntdll.dll!zwCreateFile
b. ntdll.dll!KiFastSystemCall sysenter
c. sysenter指令切入内核
....................
内核函数调用
....................
......................
省略xxxxxxxxx


CreateFileW流程:

kernel32.dll!CreateFileWImplementation ; 实际就是导出表 CreateFil 地址

kernel32.dll!CreateFileWImplementation
ds:RtlInitUnicodeStringEx
BaseIsThisAConsoleName
API-MS-Win-Core-File-L1-1-0.CreateFileW ; 实际就是导入表 CreateFileW 地址

 

API-MS-Win-Core-File-L1-1-0.CreateFileW
ntdll.dll!zwCreateFile
ntdll.dll!KiFastSystemCall
sysenter ;sysenter指令切入内核

 


总结一下,API调用过程
1. 如果API为A版本. 先转换为W版本, W版本不用转换
2. 通过 导出表的相应API地址 调用API, 经过若干个初始化功能函数调用
3. 通过 导入表的相应API地址 在调用API, 经过ntdll.dll!zwAPI 到ntdll.dll!ntAPI 的若干个调用后, 通过汇编指令
sysenter切入内核
4. 内核函数调用, 省略xxxxxxxxx

分析 kernel32.dll中函数调用流程分析

标签:

原文地址:http://www.cnblogs.com/mayingkun/p/5408663.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!