【文件格式漏洞】微软ANI光标文件漏洞彻底分析利用

windows漏洞——user32.dll的ANI文件处理漏洞

ANI文件格式 

ANI(APPlicedon Startins Hour Glass)文件是MS Windows的动画光标文件,可以作为鼠标指针,其文件扩展名为“.ani”。ANI文件由“块”(chunk)构成。它一般由五部分构成:标志区、文字说明区、信息区、时间控制区和数据区,即RIFF—ACON,LIST—INFO,anih,rate,LIST—fram。ANI文件在播放时所形成的动画效果,其实就是一张张的光标或图标图像按一定的顺序绘制到屏幕上,并保留指定的时间(见时间控制区说明)依序循环显示的结果。一个ANI文件的开头12个字节中,头4个字节为RIFF,后4个字节为ACON,中间4个字节是该ANI文件的长度(字节数)。有了RIFF和ACON,就可断定该文件是一个ANI文件,也就是说,ACON是一个动画光标文件的标志。
在一个ANI文件中,必须有的块标识有以下几个:
  RIFF—多媒体文件识别码
  ACON—ANI文件识别码
  anih—ANI文件信息区识别码
  LIST—LIST列表形式(窗体形式fccType=“fram”)
  icon—icon识别码
在一个ANI文件中,还可能有以下几个块标识中的一个或多个:
  INAM—ANI文件标题区识别码
  IART—ANI文件说明信息区识别码
  rate—ANI文件时间控制数据区识别码
  seq —ANI文件图像显示帧顺序控制区识别码
这些块之间的逻辑层次关系可以如下表示:
"RIFF" {Length of File}
    "ACON"
        "LIST" {Length of List}
            "INAM" {Length of Title} {Data}
            "IART" {Length of Author} {Data}
        "fram"
            "icon" {Length of Icon} {Data}      ; 1st in list
            ...
            "icon" {Length of Icon} {Data}      ; Last in list  (1 to cFrames)
    "anih" {Length of ANI header (36 bytes)} {Data}   ; (see ANI Header TypeDef )
    "rate" {Length of rate block} {Data}      ; ea. rate is a long (length is 1 to cSteps)
    "seq " {Length of sequence block} {Data} ; ea. seq is a long (length is 1 to cSteps)
-END-

以上是对ANI文件格式的结论性描述,要完全明白这些块的作用和意义,以及块与块之间的逻辑关系,确实需要下一番功夫。

posted @ 2014-12-16 19:18  土豆就是洋芋  阅读(483)  评论(0编辑  收藏  举报