Windows Vista下UIPI和Windows消息的故事(UIPI默认情况下会禁止所有高于WM_USER的消息)
一、 什么是UIPI
UIPI指User Interface Privilege Isolation(用户界面特权隔离),是Windows Vista 新引入的一种安全特性。用于拦截接收比自身进程MIC等级还低的进程发来的消息。
根据Windows开发规范,用户自定义的消息ID均大于WM_USER,而且UIPI默认情况下会禁止所有高于WM_USER的消息,换句话说,在Windows Vista里面,如果你试图往一个高于你自身MIC等级的进程发送自定义消息,结果肯定是失败的,除非接收端设定了自定义消息过滤。对于那些低于WM_USER的系统定义的消息,只有选择性的消息会发送成功,对于那些容易引起危险的消息也会被禁止,而且不可更改。
……
二、 UIPI和窗口粉碎攻击
窗口粉碎攻击的方法是利用Windows消息机制,给指定的窗口句柄发送特定的Windows消息。消息发送成功以后,被发送的消息将进入接收方的消息循环里面进行处理。
常见的攻击方法有:发送WM_CLOSE消息让接收方退出。另外,还可以发送WM_SETTEXT给一个窗口设置文字等。
……
三、 UIPI的原理和实例
Windows里面,和窗口消息发送相关的API函数有2大类:SendMessage和PostMessage,这两个函数可以派生出n个类似函数,例如:SendMessageTimeout等。UIPI既然被称为User Interface Privilege Isolation(用户界面特权隔离),那么肯定需要对这2大类函数进行处理了。
……
前面说到,UIPI的本质是检查目标窗口和发送方是否具有相同的MIC等级或者发送方具有更高的MIC等级,如果符合上述条件,则允许消息的传递,否则将消息丢弃。
……
下面以一些例子说明UIPI的具体用途
下面分为6个实验分别讲述各种条件下的MIC和UIPI的关系。
实验一:当Client和Server进程都处于同一个MIC等级的时候
实验二:接收端MIC等级高于发送端情况下的时候
实验三:接收端MIC等级底于发送端情况下的时候
实验四:系统消息的处理
实验五:接收端运行在高MIC等级下,发送端运行在低MIC等级下的情况(消息过滤模式)
实验六:系统消息是否能够自动放行
……
四、 UIPI带来的兼容性问题
虽然UIPI给应用程序的安全带来了不少好处,微软在UIPI兼容性问题上也做了一些处理,但是UIPI还是会带来下面的一些兼容性问题:
……
五、 结论
UIPI的引入,比较有效的解决了窗口粉碎攻击的问题,同时也规范了应用程序开发商的Windows消息开发流程,虽然UIPI会导致一些兼容性问题的出现,但是不可否认的是,UIPI属于一种利大于弊的技术方法。
……
太晚了,先睡觉吧,详情还是看PDF文档吧。
全文PDF版本可以在 http://www.KZTechs.com 下载到
演示用的Demo程序可以在 http://www.KZTechs.com/uipistory/uipistorydemo.zip 下载到。
https://blog.csdn.net/dpsying/article/details/50771424
Windows Vista下UIPI和Windows消息的故事(UIPI默认情况下会禁止所有高于WM_USER的消息)的更多相关文章
- 在系统启动时,Windows Vista 中、 在 Windows 7 中,Windows Server 2008 中和在 Windows Server 2008 R2 中的 497 天后未关闭 TIME_WAIT 状态的所有 TCP/IP 端口
在系统启动时,Windows Vista 中. 在 Windows 7 中,Windows Server 2008 中和在 Windows Server 2008 R2 中的 497 天后未关闭 TI ...
- RabbitMQ-如何保证消息在99.99%的情况下不丢失
1. 简介 MQ虽然帮我们解决了很多问题,但是也带来了很多问题,其中最麻烦的就是,如何保证消息的可靠性传输. 我们在聊如何保证消息的可靠性传输之前,先考虑下哪些情况下会出现消息丢失的情况. 首先,上图 ...
- Sql Server优化之索引提示----我们为什么需要查询提示,Sql Server默认情况下优化策略选择的不足
环境: Sql Server2012 SP3企业版,Windows Server2008 标准版 问题由来: 最近在做DB优化的时候,发现一个存储过程有非常严重的性能问题, 由于整个SP整体逻辑是一个 ...
- 使用QFileInfo类获取文件信息(在NTFS文件系统上,出于性能考虑,文件的所有权和权限检查在默认情况下是被禁用的,通过qt_ntfs_permission_lookup开启和操作。absolutePath()必须查询文件系统。而path()函数,可以直接作用于文件名本身,所以,path() 函数的运行会更快)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/Amnes1a/article/details/65444966QFileInfo类为我们提供了系统无 ...
- 使用QFileInfo类获取文件信息(文件的所有权和权限检查在默认情况下是被禁用的。要使能这个功能 extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;)
QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接,等等.并且,通过这个类,可以修改文件的大小和最后修改.读取时间.同时,QFi ...
- UIView的clipsToBounds属性,layoutSubViews及触摸事件传递(默认情况下)总结
一.UIView的clipsToBounds属性 * 默认情况下,超出父控件尺寸范围的子控件还是可见的 * 如果设置父控件的clipsToBounds=YES,就会裁剪掉超出父控件尺寸范围内的子控件, ...
- jquery Tab默认情况下自动切换
<!DOCTYPE html><html lang="zh-CN"><head><meta http-equiv="Conten ...
- 默认情况下,不使用of子句表示在select所有的数据表中加锁(转)
Select …forupdate语句是我们经常使用手工加锁语句.通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作.同时,在多版本一致读机制的支持下,select语句也不 ...
- target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件
target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件
随机推荐
- Kinect 开发 —— Kinect studio
This tool can record all the data coming into an application from a Kinect unit. You can then view, ...
- JavaScript--数据结构与算法之链表实现约瑟夫环
传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围.犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案.他们围成一个圈,从一个人开始,数到第三个人时将 ...
- js 判断是不是空、值是否存在
判断数组是否存在某个值: Array.indexOf(val) > -1 //存在 (缺陷:一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观.二 ...
- chkconfig---检查设置系统服务
chkconfig命令 chkconfig命令检查.设置系统的各种服务.这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务 ...
- 【习题 8-8 UVA - 1612】Guess
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] double千万不要用==判断相等... 而且两个保留2位有效数字的数字x,y 判断它们相等应该这样. int temp1 = ro ...
- Jenkins学习总结(2)——Jenkins+Maven进行Java项目持续集成
最近配置了Jenkins服务器,记录下基本过程.(当然还遇到了若干小问题,兵来将挡水来土掩就是了) Jenkins安装 安装Tomcat 从Jenkins官网下载jenkins.war文件.官网地址: ...
- HDU 3487(Play with Chain-Splay)[template:Splay]
Play with Chain Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 关于XAMPP安装后APACH无法启动的问题
Xampp的获得和安装都十分简单,你仅仅要到下面网址: http://www.apachefriends.org/zh_cn/xampp.html 下载xampp就可以.我安装的是windows版本号 ...
- Fragment-按返回键程序退出
今天在做fragment的时候,发现一个问题,当我的界面停留在fragment的时候,按物理返回键,这时候会推出整个应用.这当然不是我们期望的,我们期望按返回键以后,应用界面返回添加fragment之 ...
- Day6上午解题
预计分数:100+100+30=230 实际分数:90+25+10=125 T1少判了一种情况,T2的贪心是错的,T3被卡了... T1 模拟水题,注意20的可以用3个5块的找 #include< ...