API函数的调用过程(ring3)
Windows API
-
Application Programing Interface (应用程序接口) 简称API函数
-
Windows 有多少个API?
主要是存放在C:\WINDOWS\system32下面所有的dll -
几个重要的dll
Kernel32.dll:最核心的功能模块,比如管理内存,进程和线程相关的函数等.
User32.dll:是Windows用户界面相关的应用程序接口,如创建窗口和发送消息等.
GDI32.dll全称是Graphical Device Interface(图形设备接口),包含用于画图和显示
Ntdll.dll:大多数API都会通过这个dll进入内核(0环)
绝大部分核心功能是在0环实现的,3环只是使用了0环提供给他的一个接口.
Kernel32.dll ->ReadProcessMemory
在C:\WINDOWS\system32\目录下找到kernel32.dll模块,放到IDA中 查看ReadProcessMemory的代码
我们看到在用户层的核心功能模块中的ReadProcessMemory函数再将参数压栈后,又调用了另一个模块的函数NtReadVirtualMemory
ReadProcessMemory:
ring3所做的事情: