关于XP SP3 系统下NtUserCreateWindowEx 原型分析_修正.pdf

关于XP SP3 系统下NtUserCreateWindowEx 原型分析_修正.pdf

ID:52247832

大小:250.04 KB

页数:7页

时间:2020-03-25

关于XP SP3 系统下NtUserCreateWindowEx 原型分析_修正.pdf_第1页
关于XP SP3 系统下NtUserCreateWindowEx 原型分析_修正.pdf_第2页
关于XP SP3 系统下NtUserCreateWindowEx 原型分析_修正.pdf_第3页
关于XP SP3 系统下NtUserCreateWindowEx 原型分析_修正.pdf_第4页
关于XP SP3 系统下NtUserCreateWindowEx 原型分析_修正.pdf_第5页
资源描述:

《关于XP SP3 系统下NtUserCreateWindowEx 原型分析_修正.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、关于XPSP3系统下NtUserCreateWindowEx原型分析(修正版)关于XPSP3系统下NtUserCreateWindowEx原型分析修正版ByHSQ说明:其实以前就因为需要用到这个函数来处理一些特定窗口,苦于没有该API原型,最后自己也是草草的DBG了一下,可弄错来的结果还是有偏差。最近再次用那些东西试试效果,居然发现用起来完全形同虚设。可能是系统升级后,原来蒙的偏移量改变了。乘着闲来无事,干脆下决心给彻底弄清楚其原型。顺便将分析过程记录存档,以便共享后来者和遗忘是查阅。1.其最终由WIN32K.SYS实现2.调用流程第1页共7页关于XPSP3系统下NtUserCreate

2、WindowEx原型分析(修正版)3.参数传递经过3.1CreateWindowEx(CreateWindowExW/A)先从2k源码看参数传递过程开始分析注意:在2K中没有CreateWindowExW/A之分,这也正是需要对NtUserCreateWindowEx进行重新分析的原因CreateWindowEx没有对参数进行任何处理,而是追加一个参数后直接调用_CreateWindowEx3.2_CreateWindowEx可见,在2k时,是通过是否定义了这个标志来调用相应版本的API,及来确定是W/A之分的。而在XP中,已经存CreateWindowExW/A之分了,在通过IDA分析

3、可知对于的调用:第2页共7页关于XPSP3系统下NtUserCreateWindowEx原型分析(修正版)对于的调用:即A版本的=,W版本为,其他参数都沿袭2K。_CreateWindowEx进行一些处理后接着开始进入下一层调用,这里XP与2K处理有些差异。3.3NtUserCreateWindowEx(VerNtUserCreateWindowEx)A.在2K中,到次就直接进入了NtUserCreateWindowEx流程NtUserCreateWindowEx的原型:第3页共7页关于XPSP3系统下NtUserCreateWindowEx原型分析(修正版)至此,用户层的处理已经结束。

4、B.而在XP中,却还得经过一个VerNtUserCreateWindowEx调用才会进入NtUserCreateWindowEx流程。结合2K的源码,拿IDA的F5初步分析,猜测VerNtUserCreateWindowEx应该就是以前NtUserCreateWindowEx的伪函数再看看该处使用到的一些字符结构由此可见PLARGE_STRING是PLARGE_ANSI_STRING与PLARGE_UNICODE_STRING的通用结构,而VerNtUserCreateWindowEx内代码片无非是根据上层函数传入的进行做A/W的配对吻合而已,故最终确定其原型应该为第4页共7页关于XPS

5、P3系统下NtUserCreateWindowEx原型分析(修正版)在此基础上,用IDA进行分析看得出NtUserCreateWindowEx的最终原型基本为,4.最终整理XPSP3下得到真正的NtUserCreateWindowEx由于昨晚马虎,依据以前的经验,直接认为传到内核后所有的字符参数应该均为宽字节类型,于是直接将和参数类型设为PLARGE_UNICODE_STRING。后来在自己写个创建窗口的例子时,发现用A版创建了一个自定义的类窗口,到内核层却只能把窗口类名称给解析出第5页共7页关于XPSP3系统下NtUserCreateWindowEx原型分析(修正版)来。再看看以前的分

6、析过程,于是猜测也可能存在传到内核还是单字节的情况,随即在自己的代码内加了W/A之分后,发现窗口的类好名都能很好的解析出来。于是它们的参数类型应该为的PLARGE_STRING,自己在内核里还得具体区别对待。修正后的原型如下:5.验证分析结果正确性测试例子的代码片:测试驱动的解析代码片:第6页共7页关于XPSP3系统下NtUserCreateWindowEx原型分析(修正版)最后测试了一下,证明这次分析的是完全对的…^_^….参考资料:1.<>部分源码2.<>部分源码2009年3月13日星期五(北京)第7页共7页

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。