Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
  本篇原文为 寂静的羽夏(wingsummer) 中文翻译,非机翻,著作权归原作者 RbmmDennis A. Babkin 所有。
  由于原文十分冗长,也十分干货,采用机翻辅助,人工阅读比对修改的方式进行,如有翻译不得当的地方,欢迎批评指正。翻译不易,如有闲钱,欢迎支持。注意在转载文章时注意保留原文的作者链接,我(译者)的相关信息。话不多说,正文开始:

本篇文章包含一些没有被原厂家(指微软)进行文档化的功能和特色。在阅读本篇文章的相关内容和建议之后,你应该为自己的所作所为负责。展示在本文的方法依赖于内部实现并且可能以后不再有效。

介绍

在我们的第一篇关于错综复杂的用户APC的博文发布之后,我们决定从细节的深度拓展该主题,将会介绍有关异步过程调用(APC)在Windows操作系统的内部实现。
  那我们就开始吧,这里介绍没有什么特别的先后顺序。

目录

以下所有主题之间的联系并不是特别紧密,所以你或许想要一个可以更容易查阅的目录表:

  • 介绍
  • 目录
  • APC 内部实现概要
    • 将线程挂靠到另一个进程
    • APC 的类型
    • 内核 APC 的使用内存的易错点
    • 中断和阻塞内核 APC
    • RundownRoutine 细节
    • APC 和驱动卸载的细微差别
    • 案例研究 - 早期注入 Kernel32.dll 的陷阱
  • 来自内核的用户 APC
    • 用户模式 APC 的实现
    • “特殊”的用户 APC
  • Windows XP 中漏洞百出的用户模式 APC 实现
  • 错综复杂的用户模式 APC 实现 DLL 注入
    • PsSetLoadImageNotifyRoutine 陷阱
  • ZwQueueApcThread 与 QueueUserAPC 孰优孰劣
    • 激活上下文句柄错误
    • 严谨的 APC 文档
  • 用户 APC 演示代码
  • 32 位进程中的 64 位用户 APC
    • 获取进程模块的代码示例
  • 后记

APC 内部实现概要

为了在后面的文章——《伸入 NT 内核的异步过程调用内幕》,能够更好让大家更深入的理解内核 APC 的内部实现,我们不会重复原来已经讲过的了,而是多多陈述一些其他且鲜为人知的 APC 相关的细节。

为了更简洁的描述,在技术上说 APC 就是一堆在内存里存储的二进制字节,也就是所谓的 KAPC 结构体:

typedef struct \_KAPC {UCHAR Type;UCHAR SpareByte0;UCHAR Size;UCHAR SpareByte1;ULONG SpareLong0;_KTHREAD * Thread;_LIST_ENTRY ApcListEntry;void (* KernelRoutine)( _KAPC * , void (* * )( void * , void * , void * ), void * * , void * * , void * * );void (* RundownRoutine)( _KAPC * );void (* NormalRoutine)( void * , void * , void * );void * Reserved[0x3];void * NormalContext;void * SystemArgument1;void * SystemArgument2;CHAR ApcStateIndex;CHAR ApcMode;UCHAR Inserted;
}KAPC, *PKAPC;

上述结构体是在KAPC_STATE结构体里面的双向链表一部分:

typedef struct \_KAPC\_STATE {_LIST_ENTRY ApcListHead[0x2];_KPROCESS * Process;UCHAR InProgressFlags;UCHAR KernelApcInProgress : 01; // 0x01;UCHAR SpecialApcInProgress : 01; // 0x02;UCHAR KernelApcPending;UCHAR UserApcPendingAll;UCHAR SpecialUserApcPending : 01; // 0x01;UCHAR UserApcPending : 01; // 0x02;
}KAPC_STATE, *PKAPC_STATE;

并且KAPC_STATE自身也是线程对象的一部分,存储在内核里的KTHREAD结构体中:

深入Windows APC相关推荐

  1. Windows APC学习笔记(二)—— 挂入过程执行过程

    Windows APC学习笔记(二)-- 挂入过程&执行过程 基础知识 挂入过程 KeInitializeApc ApcStateIndex KiInsertQueueApc Alertabl ...

  2. Windows APC学习笔记(一)—— APC的本质备用APC队列

    Windows APC学习笔记(一)-- APC的本质&备用APC队列 基础知识 APC的本质 APC队列 APC结构 分析 KiServiceExit 总结 备用APC队列 挂靠环境下Apc ...

  3. python兼职平台信号处理_如何在Windows机器上处理python中的信号

    Python的os.kill在Windows上包含了两个不相关的API.当sig参数为CTRL_C_EVENT或CTRL_BREAK_EVENT时,它会调用GenerateConsoleCtrlEve ...

  4. 迈克菲实验室:Flame病毒的深度分析

    今年五月份发现的Flame病毒(又名Flamer.Skywiper或火焰病毒)对伊朗能源部门进行了猛烈的网络***,Flame病毒的出现引起了人们对于网络间谍活动和网络战争的高度关注.伊朗方面认为,F ...

  5. 【免杀前置课——Windows编程】十四、异步IO——什么是异步IO、API定位问题、APC调用队列

    异步IO 异步IO 异步I/0注意事项: 定位问题 总解决方案 APC调用队列 异步IO 当我们读取一个文件时,一般情况下,线程是阻塞的,也就是说,当前线程在等待文件读取操作结束,这种方式叫同步IO. ...

  6. [6]Windows内核情景分析 --APC

    APC:异步过程调用.这是一种常见的技术.前面进程启动的初始过程就是:主线程在内核构造好运行环境后,从KiThreadStartup开始运行,然后调用PspUserThreadStartup,在该线程 ...

  7. windows php apc 安装,php-apc 安装

    wget-c http://pecl.php.net/get/APC-3.1.13.tgz tar-zvxf APC-3.1.13.tgz cdAPC-3.1.13 编译安装: 复制代码 代码如下: ...

  8. php 的opcode缓存apc以及其安装

    先说说php程序的执行流程吧,说明了这个,才好开始我们的优化之旅. 客户端(譬如浏览器) ->请求Get hello.php -->cgi服务器接(譬如apache)收到请求,根据配置寻找 ...

  9. PHP APC(可选PHP缓存)

    APC(Alternative PHP Cache)是一个开放自由的PHP opcode缓存.它的目标是提供一个自由.开放和健全的框架用于缓存和优化PHP中间代码. 在Windows上,APC需要一个 ...

最新文章

  1. 1-runtime的Method,IMP,Property,ivar
  2. 办公室自动化系统_大队举办办公自动化系统培训班
  3. NLineInputFormat案例
  4. 《系统集成项目管理工程师》必背100个知识点-13项目经理是整合者
  5. 使用node和npmVS时出现的问题
  6. Spring的IoC与DI差异
  7. 关于apache的虚拟主机配置
  8. honeywell新风系统控制面板说明_详解装了新风系统,怎么清洗维护简单?
  9. C语言将字符串转json
  10. 在写spring项目的时候,有时候需要写ApplicationContext,有时候不要写ApplicationContext
  11. 正则RegExp对象的用法
  12. 计算机一级学ug么,怎样才能学好UG从事电脑编程工作呢?进来看看必有收获!...
  13. 计算机主机结构讲解,电脑内部结构图和讲解
  14. 实验十、静态路由和直连路由引入配置
  15. Java集合框架--学习目标 集合概念 Collection体系集合 Collection接口
  16. 走马观花-浪里跳-学习英文
  17. qt中的enter键
  18. python案例——数学问题案例
  19. 运单编号快速加单引号和逗号
  20. TH-OCR文字识别SDK 12.X介绍

热门文章

  1. 使用zsh和oh-my-zsh修改xshell中命令颜色
  2. AVPlayer简单使用
  3. React之生命周期-forceUpdate
  4. 关于 Burte Force
  5. 全自动荧光免疫分析仪系统是如何在FET4418-C核心板中实现的
  6. JavaWeb开发工具
  7. 简报 | 韩国釜山发行地区性数字货币,力促自由贸易区发展
  8. 《树莓派用户指南(第3版)》——2.4 在SD卡上安装NOOBS
  9. 利用python和boto3包从amazon s3 bucket中下载数据
  10. STC89C52的IIC总线写EEPROM