WindowsAPI
- Application Programming Interface,简称API函数。
- Windows有多少个API?主要是存放在 C:\WINDOWS\System32 文件夹下所有的dll。
- 几个重要的DLL如下:
- Kernel32.dll:最核心的功能模块,比如管理内存、进程和线程相关的函数等。
- User32.dll:是Windows用户界面相关应用程序接口,如创建窗口和发送消息等。
- GDI32.dll:全称是Graphical Device Interface(图形设备接口),包含用于画图和显示文本的函数。比如要显示一个程序窗口,就调用了其中的函数来画窗口。
- Ntdll.dll:大多数API都会通过这个DLL进入内核(Ring0)。
分析ReadProcessMemory
可以看到最后一张图中的代码只有短短几行,真正读取内存的函数是在0环实现的,在这里只是提供了一个接口给应用程序去调用。
mov eax, 0BAh //对应内核中的某个函数的编号
mov edx, 7FFE0300h //内存地址中存了一个值,这个值是一个函数,该函数决定了用什么方式进0环。
课后练习
分析并重写WriteProcessMemory函数的3环部分(不使用任何DLL,直接调用0环函数),并在代码中使用。
重写API的意义:自己实现API的3环部分,可以避免3环程序恶意挂钩。