概述
首先我们的操作系统分为R3和R0,我们编写的exe文件如果调用了API就会出现一个调用流程

这是32位下的系统API调用流程,64位以后再说
我们一般进内核有这么几种方法
int 2E //中断门
SystemEntry //32位
SystenCall //64位
在内核中,系统通过SSDT查找内核API
SSDT(system service dispatch table) 系统服务分派表,是最常用的.SHADOW SSDT,常用于绘图的API
实验
#include<stdio.h>
#include<Windows.h>
int main(){
_asm{
int 3
}
OpenProcess(PROCESS_ALL_ACCESS, TRUE, 2836);
}
1.首先是调用3环下的OpenProcess

2.进入到了Kernel32.dll中的OpenProcess

3.进入Kernel32Base.dll中的OpenProcess

4.调用ntdll.dll中的Zw/NtOpenProcess,EAX为0xBE,对应试十进制为190,我们可以去PCHUNTER中找到index为190的API,在这之前先call KiFastCall


5.使用SystemEntry指令

|