登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 100|回复: 1

驱动开发与系统原理-系统调用流程

[复制链接]

78

主题

-6

回帖

71

积分

网站编辑

积分
71
发表于 2025-3-17 20:10:00 | 显示全部楼层 |阅读模式

概述

首先我们的操作系统分为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指令

0

主题

65

回帖

204

积分

注册会员

积分
204
发表于 2025-3-21 19:24:19 | 显示全部楼层
热心回复, 谢谢分享技术文章
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2025-4-4 14:21 , Processed in 0.206938 second(s), 22 queries , Yac On.

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表