Windows系统原理
文章平均质量分 94
Windows系统原理技术分享
三人联盟组
在大厂有长达近10年终端安全/数据安全经验,目前从事云桌面/虚拟化技术开发!
展开
-
Windows键盘和鼠标输入过程
从上面分析我们可以知道针对鼠标和键盘有两种处理方案。首先使用来设置鼠标键盘钩子(或者低级钩子),这样就可以在鼠标和键盘响应之前捕获消息,但是如果需要针对CTRL + ALT + DELETE键进行处理,那这两个操作就达不到要求了。鉴于的局限,网上有人实现了一种比较偏门的键盘热键拦截的方案,就是HOOK函数,从上面的分析我们可以发现,这个函数在所有键盘事件处理之前,因此肯定可以拦截所有消息了。但是对于这种方案的稳定性和兼容性本人没法做相关保证,因此如果正式项目中还是谨慎使用。原创 2023-10-24 09:15:43 · 591 阅读 · 0 评论 -
Windows消息钩子实现原理
消息钩子的枚举。消息钩子的摘除。很多的ARK工具都包含了上述两个功能,大致来说也是枚举和摘除相关链表。原创 2023-10-23 08:48:48 · 635 阅读 · 0 评论 -
Windows 窗口站的基本原理
例如,动态数据交换(DDE)应用程序使用全局原子表(global atom table)与其他应用程序共享项目名称和主题名称字符串,不用传递实际的字符串,一个DDE应用程序传递全局原子给它的父进程,父进程使用原子提取原子表中的字符串。注意:下面的代码来自REACTOS的代码分析,Windows的真实代码可能和其有出入,但是实现原理基本一致,我们探讨原理使用的是REACTOS源码(因此下面的源码只是说明原理,并不代表Windows的真实实现)。,与上面的声明不太一致,但是并不影响整个流程的理解。原创 2023-10-20 09:49:33 · 255 阅读 · 1 评论 -
Windows 会话内存隔离原理
首先需要明白一个概念的是,我们在显示器上面看到的东西,都是内存(或者显存)里面的东西,如果我们在同一个时候,同一个内存位置看到的东西不同,那么,肯定就是看到不同的内存。说到会话隔离,其中显而易见的就是GDI对象的隔离,所有的GDI内存都是跟会话相关的,那么GDI内存是怎么做到会话隔离的呢?我们可以先看一下GDI创建的时候内存从哪里来的。从这里我们可以发现,所有的内存都是通过会话内存来的,也就是说通过桌面这个堆分配的GDI内存,都落在了会话内存中了,因此GDI对象也就通过会话进行内存隔离了(关键函数在于。原创 2023-10-19 10:03:34 · 659 阅读 · 1 评论 -
Windows GDI句柄分析
我们知道,Windows 的GDI是一个单独的子系统,这个子系统中包含两个重要的东西是CSRSS进程和WIN32K驱动,由这两个模块实现所有的绘图操作,我们先看一下其中的核心之一就是WIN32K,这个模块加载的时候会调用。主要有一个好处就是Windows在应用层的时候就可以通过句柄找到GDI对象,而不需要切换到内核中,我们知道切换到内核是需要一定的资源消耗的,因此使用这种方式可以提升一定的速度。不同的进程,对应的GDI对象的句柄是一样的,因此GDI对象不同于内核对象,完全可以跨进程使用。原创 2023-10-18 09:40:14 · 585 阅读 · 2 评论 -
DPC_WATCHDOG_VIOLATION蓝屏问题分析(一)
说明当前正在执行DPC例程,并且超时了,可以直接看到DPC超时的原因(或者由于其他线程导致该DPC一直无法退出)。说明此时该CPU一直处于DPC状态执行,这个原因需要具体分析。!查看所有cpu的dpcwatchdog信息。!dpcs查看指定cpu的dpc例程信息。原创 2023-10-11 08:59:07 · 27090 阅读 · 1 评论