从保存桌面设置文件探讨S60文件结构解析的方法

在安装了数目众多的软件游戏后 , SX1的功能表往往混乱不堪 , 很多机油都是把各个程序在桌面的快捷方式分门别类的放进自己建立的诸如“游戏”、“影视”之类的文件夹里 , 以求一目了然、使用方便 。但是格式化手机后(不格式化MMC) , 再插入MMC , 安装在MMC上的本来归类的程序又跑到桌面上 , 还要重新整理 。今天在younet论坛看到有兄弟问起如何在格机后保持功能表划分不变 , 不禁回想起以前对这个问题探索 , 授人以鱼 , 不如授人以渔 , 下面把我解析这个问题的整个过程奉献给大家希望能有所帮助:首先 , 格机是格式化C盘显然与MMC无关 , 而更换另一张MMC , 可以看到所有用户建立的目录都在 , 所以可以肯定的是桌面设置文件保存在C盘 。依照经验 , 此类设置文件多半在C:SystemDATA目录下 , 于是用Fileman通过蓝牙把DATA下所有文件发送到电脑(Contacts.cdb等几个文件由于系统使用 , 无法发送) , 然后用UltraEDIT依次打开值得怀疑的几个文件(有些文件顾名思义 , 基本不需要怀疑) , 试图寻找类似树的结构或者熟悉的程序名 , 但是无功而返 。于是想到因为所有的文件夹都是中文名 , 文件里肯定是内码 , 看不出来的 , 不妨建立个英文文件夹试试 。在桌面上建立了名叫BEMOON的文件夹 , 然后再次发送DATA目录到PC , 经过细心查找(其实文件不多 , 每个文件都不大)在C:SystemdataApllications.dat找到了“BEMOON”字符串 。怀疑这个就是桌面配置文件 。
回到手机 , 将该文件移至MMC , 重新启动手机 , 桌面完全乱了 , 所有程序都在根目录下 , 再将原来文件从MMC移回 , 覆盖同名文件 , 重启手机 , 桌面复原 。可以初步确定这个文件保存了桌面设置 , 但是 , 是不是仅仅这一个文件起到了作用 , 还未可知 , 因为这个文件里面并没有保存程序的名字 , 也可能仅仅保存了目录结构 。为了验证 , 将“游戏”目录改为“GAMES” , 把C:SystemdataApllications.dat传到PC 。然后把GAMES中的“GoBoy”移动到根目录 , 再把此时的C:SystemdataApllications.dat传到PC 。比较2个文件 , 发现了端倪:

【从保存桌面设置文件探讨S60文件结构解析的方法】


红色的方框就是GAMES的ASCII啦 , 除此之外 , 可以明显的发现 , 蓝色的方框里面的数字表示了该目录下程序数目 , GAMES从1A变成19 , 根目录从2C变成2D , 而换算成10进制的确与该目录下快捷方式数目相符 。观察绿色的8位16进制数 , 第二组“0A 00 FF 01”变成了第一个 , 而第一组“F8 8F 1F 10”跑到了文件末尾(图上没有画出) , 而这与实际情况非常吻合(GoBoy被放到功能表最尾) 。看到这里我恍然大悟 , 做过Symbian开发的都知道 , 每个SymbianOS授权的APP都有一个全球唯一的Unicode标识UID , 正好是8位16进制数 , 所以这个也就是程序的标识 , 各个标志之间以“71 1D 62 70”作为分隔符 , 整个文件呈现顺序数据结构 , 也就是说Applications.dat这个文件完整的保存了桌面的配置 。
如此以来 , 格机前只要把这个文件保存在mmc上 , 格机后再回复到原来位置 , 我们精心归类的桌面还是可以回来 , 但是以前安装在C上程序已经没有了 , 会不会发生错误?我每次这样做 , 哪怕mmc不同了 , 都不会发生错误 。但是也有一位兄弟说这样做后一按menu就报错 , 只能重新格机 , 第二次就不报错了 。所以最好还是把系统完全复原再恢复桌面 。
Symbian系统不像windows一样有个累赘的注册表 , 系统的配置都在相应的文件里面 , 软件安装卸载也非常绿色自由 , 内存管理安全严格、ActiveObject技术也比MultiThread更加稳定健壮 , 这样的系统更适合爱好者大胆钻研、深入探索 。此文仅仅简单介绍了一种刨根问底式的文件结构分析方法 , 希望能抛砖引玉 , 继承6688老传统 , 掀起技术讨论的热潮 。

推荐阅读