首页
论坛
课程
招聘
[原创]Windows Mobile CAB安装包分析[MASSADA0021]
2009-3-16 22:13 11979

[原创]Windows Mobile CAB安装包分析[MASSADA0021]

2009-3-16 22:13
11979
【文章标题】: 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

【看雪培训】《Adroid高级研修班》2022年夏季班招生中!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (17)
雪    币: 40
活跃值: 活跃值 (147)
能力值: ( LV9,RANK:270 )
在线值:
发帖
回帖
粉丝
kuang110 活跃值 6 2009-3-16 22:30
2
0

呵呵沙发了吧
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
hustphoto 活跃值 2009-3-17 13:13
3
0
板凳
学习ing~~
雪    币: 210
活跃值: 活跃值 (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
救世猪 活跃值 1 2009-3-17 17:24
4
0
支持!
原来如此~~~
以前经常拿来cab,以为是rar文件呢,当作rar直接解压,然后后出来一大堆乱七八糟的文件,从来没想过这些文件是干嘛的~

对了,也应该可以通过直接更改rar包里面的这个_setup.xml来更改cab包的安装吧
雪    币: 2309
活跃值: 活跃值 (48)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
加百力 活跃值 12 2009-3-17 17:35
5
0
据我分析看CAB包只是简单对内部的文件整体打包,并没有进行多少压缩操作。
并且用WinHex打开CAB包,其文件头和一般的RAR压缩包还是有很大不同。
雪    币: 2309
活跃值: 活跃值 (48)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
加百力 活跃值 12 2009-3-17 17:37
6
0
“对了,也应该可以通过直接更改rar包里面的这个_setup.xml来更改cab包的安装吧”

这个问题问得很好!
我估计应该是这样的,但是并未做试验验证。如果感兴趣你可以抽空做做试验,并给大家介绍一下。呵呵。
雪    币: 115
活跃值: 活跃值 (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
NETTF小金 活跃值 2 2009-4-3 20:33
7
0
版主,我推荐个工具,WinCE CAB Manager,可以直接打开CAB包看文件和写入的注册表内容还能导出导入修改
雪    币: 2309
活跃值: 活跃值 (48)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
加百力 活跃值 12 2009-4-4 09:07
8
0
感谢NETTF小金的介绍!以前还不知道有这样的好工具可用。
网上下载的地方很多,感兴趣的朋友可以下载来试试。
雪    币: 115
活跃值: 活跃值 (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
NETTF小金 活跃值 2 2009-4-4 12:59
9
0
做PPC安装包的业余人员例如我……都在用它……快捷制作注册表patch也能用它,做壁纸tsk也用它-_-万能药
雪    币: 2309
活跃值: 活跃值 (48)
能力值: (RANK:510 )
在线值:
发帖
回帖
粉丝
加百力 活跃值 12 2009-4-4 15:22
10
0
过去知道有个MakeCab.exe程序可以制作CAB包,SDK安装后会提供。这会又有更好的工具可用了。
雪    币: 203
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kaison 活跃值 2009-4-16 23:26
11
0
WinCE cab manager 很好用,还可以压缩cab
雪    币: 167
活跃值: 活跃值 (59)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
pmma 活跃值 1 2009-5-8 09:09
12
0
WinCE cab manager对这个很管用
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
book 活跃值 2009-5-25 22:39
13
0
WinCE CAB Manager
雪    币: 43812
活跃值: 活跃值 (164062)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 活跃值 2009-5-28 11:33
14
0
Thanks for share.
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
lesgle 活跃值 2009-6-15 21:07
15
0
我试过,有文件用WinCE cab manager没办法打包进去cab包里面,非常的诡异
雪    币: 115
活跃值: 活跃值 (10)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
NETTF小金 活跃值 2 2009-6-16 00:21
16
0
目前没遇到过,举例?
雪    币: 134
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
secode 活跃值 2009-6-17 22:33
17
0
这个 xml 怎么利用呢?
雪    币: 60
活跃值: 活跃值 (117)
能力值: ( LV12,RANK:220 )
在线值:
发帖
回帖
粉丝
cater 活跃值 5 2009-6-24 14:53
18
0
微软好象有专门解包工具
游客
登录 | 注册 方可回帖
返回