【文章标题】: Windows Mobile CAB安装包分析
【文章作者】: 加百力
【软件名称】: SkypeForPocketPC.CAB
【下载地址】: 自己搜索下载
【编写语言】: C++
【使用工具】: EditPlus,RAR,WinHex,PETools,
【操作平台】: Windows XP SP2
--------------------------------------------------------------------------------
【详细过程】

一般我们得到的Windows Mobile安装程序有两种情况:

01、可以在PC上运行的EXE可执行文件。
    当我们下载一些正规厂商生产的WM软件,比如卡巴的杀毒软件或者SkyPE软件。在PC上可以运行并安装,当用户的手机接入PC时,会通过AcitveSync安装到WM手机上。因为他们在安装时在硬盘上有备份。如果你安装了WM模拟器和ActiveSync软件在PC上。当把模拟器接入PC后ActiveSync也会识别到,并安装软件到模拟器上。

02、CAB包安装包
    可以直接把CAB包拷贝到手机上点击安装。如果使用WM模拟器,则需要在WM模拟器上设置一个同PC共享的目录。设置成功后WM中会有一个新的目录:\Storage Card。把CAB包拷贝到共享目录中可以安装。

    一般安装程序会要求你选择安装目录是\Windows目录还是\Storage Card目录。为了分析方便最好选择\Storage Card目录,因为所有程序和DLL都保存在共享目录中方便在PC上分析。但是目前有很多软件为了安全会在用户选择\Storage Card目录的情况下仍然把很多核心的程序和DLL保存到系统目录中。

    本文重点介绍:如何直接分析CAB包,获取全部可执行文件和DLL文件,并详细了解软件安装过程。本次试验使用的是:SkypeForPocketPC.cab包进行分析。

01、首先用RAR解压SkypeForPocketPC.cab压缩包。
     解开压缩包之后可以看到有12文件,如图1所示。其中只有一个_setup.xml可以看出是XML格式文件。其余文件名和扩展名未知。用EditPlus打开这个_setup.xml可以看到非常丰富的安装信息。

        
首先是:安装的基本信息:
比如:<parm name="ProcessorType" value="2577" />  2577这个编号以前的文章中提到过和ARM相关。表示是目标CPU类型为ARM.
<parm name="OSVersionMin" value="4.2" />    最低安装操作系统的版本号为4.2。对应PocketPC 2003。
<parm name="NumDirs" value="5" />           生成目录个数。
<parm name="NumRegKeys" value="8" />        生成的注册表键数。

        
其次是:文件转换及安装信息:
比如:<characteristic type="%InstallDir%" translation="install">
         <characteristic type="MakeDir" />
         <characteristic type="Skype.exe" translation="install">
         <characteristic type="Extract">
         <parm name="Source" value="000Skype.001" />

通过这个信息我们知道了000Skype.001这个文件实际上是Skype.exe程序。通过一组转换及安装信息我们可以将解压得到的文件恢复正确的文件名和扩展名。


最后是:写入注册表信息:
比如:<characteristic type="HKLM\SOFTWARE\Microsoft\Today\Items\Skype">
         <parm name="Type" value="4" datatype="integer" />
  
在HKLM\SOFTWARE\Microsoft\Today\Items\Skype下写入名称为"Type"类型为"integer"值为"4"的数据。通过这组信息我们可以知道在安装过程中在系统注册表中做了哪些修改。


02、到这个阶段还剩下两个文件。使用WinHex以二进制方式打开文件可以查看其内容。发现SKYPEM~1.000开头为MSCE。这种文件我经常在CAB包中发现,MSCE可能是MicroSof CE的意思。我一般直接就把扩展名改成MSCE完事。这个文件不影响后续的分析。

对于最后一个文件SKYPES~1.999通过WinHex打开后发现是一个典型的PE文件。那么就有两种可能。要么是EXE文件或者DLL文件。首先把扩展名改成*.exe然后,用PETools打开文件查看File Header的characteristics属性就可以看到是否是DLL了。


★  根据以前分析CAB安装包的经验,经常会有个别文件在_setup.xml中没有介绍。一般都是首先用WinHex打开文件根据文件头判断文件类型再做操作。


直接分析CAB安装包的好处:

01、了解安装统计信息。
    _setup.xml文件提供了详细的安装统计信息,很容易理解总共做了哪些操作。

02、准确得到全部EXE文件和DLL文件。
    目前在WM平台据我所知还没有FileMon这样的工具,文件安装在系统目录之后需要重新导出才能做进一步分析。有时可能会漏掉部分文件。

03、容易分析安装程序对哪些注册表项做了处理。
    目前在WM平台据我所知还没有RegMon这样的工具,通过分析_setup.xml可以知道安装程序对哪些注册表项做了处理。


--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2009年03月16日 21:00:00

上传的附件 分析效果图及XML文件.rar