[原]WinCE下的CAB安装文件解包原理
Posted by bianbian on 2007-03-28 04:24
看了一下,其实是个标准的CAB压缩文件,在此基础上增加了“_setup.xml”作为描述文件。
此外,所有文件名都要符合DOS时代“8.3”的文件名规范,而且主文件名不满8位用0在左端补齐;超过八位就用“~1”“~2”结尾。因为有描述文件“_setup.xml”的存在,所以解包一个CAB安装文件是挺容易的(能还原为标准文件名、看出安装配置、注册表编写等)。目前有现成的软件WinCE CAB Manager可以用,我只是探讨一下方法;而且发现解包一点技术难度都没有。
xml文件主要结构和简单说明:
- <wap-provisioningdoc>
- <characteristic type="Install">
- <!--
- 参数配置段,其中“SetupDLL”表明是否带有安装任务DLL文件。此DLL需要4个标准入口,为了执行相应的任务,即:Install_Init、Install_Exit、Uninstall_Init、Uninstall_Exit。这里可以完成一些额外的操作任务:比如在安装结束前执行某个程序,卸载前删除所有运行期间增加的注册表键值等等。我估计WinCE下的木马得用到这个东西,呵呵。
- -->
- <parm name="SetupDLL" value="1" />
- <!--“InstallDir”表示安装目录,“%CE1%”表示 Program Files -->
- <parm name="InstallDir" value="%CE1%\Setup" translation="install" />
- <!-- 安装的总共文件数目 -->
- <parm name="NumFiles" value="4" />
- <!-- 写入注册表键值数目 -->
- <parm name="NumRegKeys" value="0" />
- <parm name="NumRegVals" value="0" />
- <!-- 产生的快捷方式数目 -->
- <parm name="NumShortcuts" value="0" />
- </characteristic>
- <!-- 下面开始每个文件的描述,包括原始文件名、安装路径等等 -->
- <characteristic type="FileOperation">
- <!-- 这里能看出 00Target.001 解压以后放到安装目录的 Target.exe -->
- <characteristic type="%InstallDir%" translation="install">
- <characteristic type="MakeDir" />
- <characteristic type="Target.exe" translation="install">
- <characteristic type="Extract">
- <parm name="Source" value="00Target.001" />
- </characteristic>
- </characteristic>
- </characteristic>
- <!-- 下面开始注册表和快捷方式的描述,基本类似,此处略去 -->
- <characteristic type="Registry">
- </characteristic>
- </wap-provisioningdoc>
可以看出,微软还是挺聪明的。一来制作简单,不需要额外的安装制作程序;二来又推广了它发明的CAB压缩格式,这种格式除了微软自己的安装程序里用(Windows、Office的安装盘里都有一拖拖的cab)世界上其他人是不用的,现在为了制作WinCE的安装程序,不得不用;三来安全性有保障,拿到一个CAB谁都能知道它进行了哪些操作(其实也可以绕过,因为可以把额外操作写到DLL里,也无法完全避免病毒)。
标签: CAB, WinCE遵守创作共用协议,转载请链接形式注明来自http://bianbian.org 做人要厚道
相关日志
Posted in Technology, WinCE | 3 Comments »