内核APC&用户APC详解

本文详细介绍了Windows操作系统中的内核APC和用户APC。内核APC在线程切换时执行,主要涉及线程切换、系统调用、中断或异常后的执行流程。而用户APC在系统调用返回用户空间前执行,需要处理复杂的换栈操作,包括备份环境、修改返回位置等。文章详细阐述了两者执行流程及KiDeliverApc、KiInitializeUserApc和KiUserApcDispatcher等关键函数的作用。
摘要由CSDN通过智能技术生成

内核APC

线程切换

SwapContext 判断是否有内核APC 
    
KiSwapThread

KiDeliverApc 执行内核APC函数

定位到SwapContext函数,然后查看KernelApcPending的值是否为空,不为空则跳转,这里只是进行判断,我们往上跟

然后回到KiSwapContext

再往上走得到KiSwapThread

这里判断后进行跳转

然后调用KiDeliverApc

系统调用、中断或者异常

当要执行用户APC之前,先要执行内核APC,这里找到KiServiceExit,有一个比较检验UserApcPending的值是否有APC请求

然后调用KiDeliverApc

内核层APC执行

KiDeliverApc

继续往里面跟,判断内核APC的链表是否为空,若不为空则跳转

红队蓝军
关注 关注
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
[网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
杨秀璋的专栏
06-25 1万+
从这篇文章开始,作者将带着大家来学习《Windows黑客编程技术详解》,其作者是甘迪文老师,推荐大家购买来学习。作者将采用实际编程和图文结合的方式进行分享,并且会进一步补充知识点,希望对您有所帮助。第二篇文章主要介绍4种常见的注入技术,包括全局钩子、远线程钩子、突破SESSION 0隔离的远线程注入、APC注入,案例包括键盘钩子、计算器远线程注入实现、APC注入等,希望对您有所帮助。
windows内核内核APC执行过程(KiDeliverApc
windows小菜鸡的博客
12-01 411
内核篇-----APC队列介绍
qq_45806710的博客
02-08 1776
APC队列 kd> dt _KAPC nt!_KAPC +0x000 Type : Int2B //APC类型为0x12 +0x002 Size : Int2B //大小为0x30 +0x004 Spare0 : Uint4B +0x008 Thread : Ptr32 _KTHREAD//目标进程 +0x00c ApcListEntry : _LIST_ENTRY /
windows内核情景分析 --APC
maomao171314的专栏
04-04 2144
APC:异步过程调用。这是一种常见的技术。前面进程启动的初始过程就是:主线程在内核构造好运行环境后,从KiThreadStartup开始运行,然后调用PspUserThreadStartup,在该线程的apc队列中插入一个APC:LdrInitializeThunk,这样,当PspUserThreadStartup返回后,正式退回用户空间的总入口BaseProcessStartThunk前,会执行
漫谈兼容内核之十二:Windows的APC机制
周寅的专栏
03-13 3099
  前两篇漫谈中讲到,除ntdll.dll外,在启动一个新进程运行时,PE格式DLL映像的装入和动态连接是由ntdll.dll中的函数LdrInitializeThunk()作为APC函数执行而完成的。这就牵涉到了Windows的APC机制,APC是“异步过程调用(Asyncroneus Procedure Call)”的缩写。从大体上说,Windows的APC机制相当于Linux的Signal机
4.内核APC执行过程
My classmates
10-24 1795
APC函数的执行与插入并不是同一个线程: 在A线程中向B线程插入一个APC,插入的动作是在A线程中完成的,但什么时候执行则由B线程决定!,所以叫“异步过程调用" 内核APC函数与用户APC函数的执行时间和执行方式也有区别,我们本节课主要学习内核APC的执行过程。 执行点1:线程切换 SwapContext //判断是否有内核APC KiSwapThread KiDelicerApc /...
内核篇-----备用APC
qq_45806710的博客
02-08 1095
备用APC队列 Kd>dt _KTHREAD Nt!_KTHREAD +0x034 ApcState :_KAPC_STATE +0x138 ApcStatePointer:[2]Ptr32_KAPC_STATE +0x14c SavedApcState :_KAPC_STATE +0x165 ApcStateIndex :UChar +0x166 ApcQueueable :UChar .. 1.SavedApcState的意义: A进程中的T线程中的所有APC函数,要访问的内存地址都是A进程的
windows内核用户APC执行流程图(KiInitializeUserApc
windows小菜鸡的博客
12-02 442
PHP APC缓存配置、使用详解
10-26
用户数据缓存的键(key)由apc_cache_make_user_key函数生成,这个函数会依赖PHP内核中的hash函数来生成键的h值。 APC缓存中的每个slot都有一个key,key的生成规则取决于数据是系统缓存还是用户数据缓存。系统缓存...
apc.rar_APC_APC 调用_QueueUserAPC _queueuserapc pudn_空态APC
09-24
总结,`apc.rar`中的代码资源提供了一个关于用户态和内核APC调用的实践平台,通过`QueueUserAPC`函数的使用,开发者可以学习如何在Windows环境下有效地利用APC进行线程间的交互和异步处理。对于理解和提升Windows...
PHP APC缓存配置与实战指南
用户缓存的键通过`apc_cache_make_user_key`函数生成,基于PHP内核的哈希函数(`zend_inline_hash_func`)。而系统缓存的键生成与配置项`apc.stat`有关。如果`apc.stat=On`,文件改动会被自动检测并重新编译,键的...
关于NT内核apc机制
06-30 1555
Asynchronous Procedure Calls (APCs) are a fundamental building block in NTs asynchronous processing architecture. An understanding of this mechanism is essential to better understand how NT works
windows 内核原理与实现读书笔记之APC(异步过程调用)
maomao171314的专栏
11-24 1334
APC(异步过程调用) APC_LEVEL ,APC(异步过程调用,Asynchronous Procedure Call)的软件中断而保留的IRQL。 DPC是系统全局的,每个处理器都有DPC链表;APC是针对线程的,每个线程都有自己特有的APC链表。APC线程优先于普通的线程代码。 APC 对象定义如下: typedef struct _KAPC { CSHORT Type; CSHORT Size; ULONG Sp...
插入APC读写内存
liuhaidon1992的博客
01-08 777
#include "ntddk.h" #include "a_header.h" NTKERNELAPI NTSTATUS PsLookupProcessByProcessId(HANDLE ProcessId, PEPROCESS *Process); NTKERNELAPI VOID NTAPI KeStackAttachProcess(PEPROCESS Process, PKAPC_...
APC驱动读写
CalvinXu
03-05 1166
//插APC温柔读内存 BOOLEAN APCReadProcessMemory(ULONG PID, PVOID targetaddress, ULONG length, PVOID retdata) { PEPROCESS pepro; KAPC_STATE kapc = { 0 }; pepro = LookupProcess((HANDLE)PID); if (pepro == ...
APC机制详解
鬼手的博客
02-15 7272
文章目录APC的本质APC队列APC结构APC相关函数KiServiceExitKiDeliveApc备用APC队列ApcState的含义挂靠环境下的ApcState的含义其他APC相关成员ApcStatePointerApcStateIndexApcStatePointer与ApcStateIndex组合寻址ApcQueueableAPC挂入过程KAPC结构挂入流程KeInitializeApc...
谈谈对APC的一点理解
乐朝夕与之共
07-10 2783
谈谈对APC的一点理解异步过程调用(APCs) 是NT异步处理体系结构中的一个基础部分,理解了它,对于了解NT怎样操作和执行几个核心的系统操作很有帮助。1) APCs允许用户程序和系统元件在一个进程的地址空间内某个线程的上下文中执行代码。2) I/O管理器使用APCs来完成一个线程发起的异步的I/O操作。例如:当一个设备驱动调用IoCompleteRequest来通知I/O管理
内核模式到用户模式的回调函数----这篇文章是十年前国外大牛写的
商少
10-23 8214
内核模式到用户模式的回调函数http://www.nynaeve.net/?p=200        NTDLL 拥有一些特定的函数被内核用来代表用户模式执行特定的功能。尽管理解这些函数对于特定的功能(比如用户模式APC)的底层实现的理解是有用的,这些函数提供的功能非常的简单。        下面是一些NTDLL导出的,内核用于与用户模式通讯的函数: 1.KiUserExceptionDis
APC异步过程调用
kernweak的博客
09-03 2481
线程是不能被“杀掉”、“挂起”、“恢复”的,线程在执行的时候自己占据着CPU,别人怎么可能控制它呢? 举个极端的例子:如果不调用API,屏蔽中断,并保证代码不出现异常,线程将永久占用CPU,何谈控制呢?所以说线程如果想“死”,一定是自己执行代码把自己杀死,不存在“他杀”这种情况! 那如果想改变一个线程的行为该怎么办呢? 可以给他提供一个函数,让它自己去调用,这个函数就是APC(Asyncro...
深入解析内核态与用户APC调用方法及代码示例
文件名"内核apc.c"和"用户apc.cpp"暗示了代码可能包含两个不同的部分,分别演示如何在内核态和用户态环境下使用APC机制。 1. 用户apc.cpp 示例代码分析 ```c // 一个用户APC函数的例子 VOID WINAPI ...
写文章

热门文章

  • dll劫持 6352
  • 抓取chrome所有版本密码 5588
  • java内存马分析集合 5371
  • windows消息机制详解 5191
  • spring常见漏洞总结 5085

分类专栏

  • 网络安全 3篇

最新评论

  • ring0下使用内核重载绕过杀软hook

    D31imiter: 原文作者:Drunkmars 原文链接:http://drunkmars.top/2022/03/22/%E5%86%85%E6%A0%B8%E9%87%8D%E8%BD%BD/ 发表日期:三月 22日 2022, 12:00:00 凌晨 更新日期:March 22nd 2022, 12:44:36 pm 版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

  • windows消息机制详解

    lanwah: 0环,3环是啥意思?

  • 一款红队的工具仓库

    weixin_51613478: 请问从哪里下载,辛苦了!

  • dll劫持

    采云拓月: 不明觉厉,好奇微软为啥要引入dll,带来便利的同时,太不安全了,加上远程,hook什么的

  • 对抗无落地的shellcode注入

    易木~_~: 师傅能给下检测驱动demo吗表情包

大家在看

  • 高效财务管理:基于SpringBoot的个人理财系统
  • 一行代码解决页面平滑滚动
  • EKS Cluster Games: 云原生安全挑战之旅
  • 数学公式模板
  • 《动物园之星》x3daudio17dll丢失是什么原因,怎么修复 274

最新文章

  • 线下保薪班开启
  • AgentTesla分析报告
  • fastjson-BCEL不出网打法原理分析
2023年29篇
2022年59篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家吴川玻璃钢南瓜屋雕塑给玻璃钢雕塑着色延安玻璃钢雕塑文昌玻璃钢雕塑湛江贴马赛克玻璃钢雕塑湖南玻璃钢雕塑造型北京哪里有卖玻璃钢雕塑的佛山玻璃钢雕塑电话北京商场美陈搭建受限陕西玻璃钢人物大型园林雕塑北京室内商场美陈市场价佛山卡通玻璃钢雕塑厂家东莞公园玻璃钢雕塑定做丹阳玻璃钢雕塑厂商定制小品玻璃钢动物雕塑费用深圳玻璃钢动物雕塑价格如何白色条纹状玻璃钢花盆阳江玻璃钢动物雕塑代理商天津抽象玻璃钢雕塑定制西藏玻璃钢动物马雕塑透光玻璃钢雕塑现货玻璃钢雕塑有裂纹吗浙江玻璃钢花盆花器玻璃钢雕塑表面工艺商场美陈 红纱学校雕塑玻璃钢圣诞商场美陈活动天津玻璃钢雕塑蜗牛南阳商场美陈植物墙集宁玻璃钢仿铜雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化