百度空间 | 百度首页 
 
查看文章
 
还以为quartz.dll增加了一个是否解析quicktime文件的接口呢
2009-07-17 22:16
quartz.dll解析quicktime文件的代码质量实在太差了.
造成至少如下漏洞.

CVE-2009-1537
CVE-2009-1538
CVE-2009-1539

这次补丁,代码质量明显提高不少,估计那两个directshow 0day是玩不转了.

简单看了下修补后的代码,一开始还以为quartz.dll设置了一个是否解析quicktime文件的接口呢
HKEY_CURRENT_USER, Software\\Microsoft\\Multimedia\\DirectShow
SkipQTParse

乍看这个名字还真那么回事呢,还觉得不错,咱们需要的就是这样的接口. 后来分析quartz.dll才发现不是这么这么回事.

该接口是用来控制代码是否执行VerifyQTFile函数(该函数是用来校验各atom size的).

程序员定义这个SkipQTParse按照字面的理解应该是跳过quicktime parse代码. 结果搞成了用来控制代码是否执行VerifyQTFile函数了. 是否也算一个bug?



.text:7D05C784                 mov     [ebp+var_50], eax
.text:7D05C787                 lea     eax, [ebp+hKey]
.text:7D05C78A                 push    eax             ; phkResult
.text:7D05C78B                 push    20019h          ; samDesired
.text:7D05C790                 push    esi             ; ulOptions
.text:7D05C791                 push    offset aSoftwareMic_11 ; "Software\\Microsoft\\Multimedia\\DirectSho"...
.text:7D05C796                 push    80000001h       ; hKey
.text:7D05C79B                 mov     dword ptr [ebp+Data], esi
.text:7D05C79E                 mov     [ebp+hKey], esi
.text:7D05C7A1                 mov     [ebp+cbData], 4
.text:7D05C7A8                 call    ds:__imp__RegOpenKeyExW@20 ; RegOpenKeyExW(x,x,x,x,x)
.text:7D05C7AE                 test    eax, eax
.text:7D05C7B0                 jnz     short loc_7D05C7D3
.text:7D05C7B2                 lea     eax, [ebp+cbData]
.text:7D05C7B5                 push    eax             ; lpcbData
.text:7D05C7B6                 lea     eax, [ebp+Data]
.text:7D05C7B9                 push    eax             ; lpData
.text:7D05C7BA                 push    esi             ; lpType
.text:7D05C7BB                 push    esi             ; lpReserved
.text:7D05C7BC                 push    offset aSkipqtparse ; "SkipQTParse"
.text:7D05C7C1                 push    [ebp+hKey]      ; hKey
.text:7D05C7C4                 call    ds:__imp__RegQueryValueExW@24 ; RegQueryValueExW(x,x,x,x,x,x)
.text:7D05C7CA                 push    [ebp+hKey]      ; hKey
.text:7D05C7CD                 call    ds:__imp__RegCloseKey@4 ; RegCloseKey(x)
.text:7D05C7D3
.text:7D05C7D3 loc_7D05C7D3:                           ; CODE XREF: CQT::CreateOutputPins(void)+145 j
.text:7D05C7D3                 cmp     dword ptr [ebp+Data], esi
.text:7D05C7D6                 jnz     short loc_7D05C7EA
.text:7D05C7D8                 push    esi
.text:7D05C7D9                 push    edi
.text:7D05C7DA                 push    [ebp+var_30]
.text:7D05C7DD                 call    ?VerifyQTFile@@YGHPAEKK@Z ; VerifyQTFile(uchar *,ulong,ulong)
.text:7D05C7E2                 test    eax, eax
.text:7D05C7E4                 jz      loc_7D05D10B
.text:7D05C7EA
.text:7D05C7EA loc_7D05C7EA:                           ; CODE XREF: CQT::CreateOutputPins(void)+16B j
.text:7D05C7EA                 push    'dhvm'
.text:7D05C7EF                 push    [ebp+var_50]
.text:7D05C7F2                 lea     eax, [ebp+var_3C]
.text:7D05C7F5                 push    eax
.text:7D05C7F6                 lea     eax, [ebp+var_38]
.text:7D05C7F9                 push    eax
.text:7D05C7FA                 lea     eax, [ebp+var_30]
.text:7D05C7FD                 push    eax
.text:7D05C7FE                 mov     ecx, ebx
.text:7D05C800                 call    ?QTDescend@CQT@@AAEHAAPAEAAK0PAEK@Z ; CQT::QTDescend(uchar * &,ulong &,uchar * &,uchar *,ulong)
.text:7D05C805                 test    eax, eax



类别:技术讨论 | 添加到搜藏 | 浏览() | 评论 (1)
 
最近读者:
 
网友评论:
1
2009-07-18 10:14 | 回复

 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu