工具: Ultraedit 或其它 16 进制编辑器, GB2312 与 UTF-8 转换器
X799 正式上市已经两个月多了,这款手机在我手里也快满 6 天了。昨天有朋友给了原厂 X799YB17.BIN 的下载地址,本人迫不及待地下载下来,打开一看,什么都不懂(废话,程序又不是中文写的),而且从易趣定购的数据线还在路上,不能升级,再加上时间也很晚了,于是就睡了。今天在 X799 论坛看到有机友升级成功,于是兴趣大增,开始分析这个 BIN 。看到其它手机有不少修改铃声的宝典,说明对这个感兴趣的人比较多,因此也从这里开始下手了。
先参考了 X199 论坛“ 自由的!”的文章 《 音乐盒 DIY 全攻略》 掌握了基本思路。 X199 的铃声是 mmf 格式的,文件开头是 {4D,4D,4D,44,00,00} ,搜索了一下,虽然找到这样的字节序列,但是创建的 mmf 文件无法播放。回想一下, X799 支持的铃声格式有 pmd, mmf 和 midi 三种, mid 最常见,于是找到一个 midi 文件(扩展名 mid ),发现文件开头为 { 4D, 54, 68, 64, 00, 00, 00, 06 } ,在 BIN 中搜索这个序列,找到好多,看来有门。
第一个 midi 的地址为 00 3783CCh ( 16 进制),在 BIN 中搜索 CC 83 37 00 ( PC 内部表示方法,即 003783CC ),在 007BDF14h 处停住,后面的就是所有 midi 的指针(地址)了。指针所指位置,如果开始为字节序列 { 4D, 54, 68, 64, 00, 00, 00, 06 } ,则为 midi 音乐,大小用下一个指针减去本指针即可得到。于是用 VC 编了一个程序,自动把符合条件的 midi 音乐读出来分别保存,一共发现了 150 个。
到这里,参考 《 音乐盒 DIY 全攻略》 已经可以 DIY 自己的音乐盒了,但是还有一个问题,就是音乐的名字怎么修改。在 BIN 中搜索汉字是找不到的,不是没有汉字,而是汉字以 UTF-8 格式保存在里面,而 PC 操作系统通常采用 GB2312 或 Unicode 表示汉字,这样,相同的字用不同格式表示出的内码是不同的。于是本人又编了一个 GB2312 和 UTF-8 相互转换的小程序,附在后面,如果没有,可以到 http://nfck.512j.com/tools/GB2UTF.rar 下载,这个网址至少 2006 年 2 月以前有效。运行界面如下:
GB2312 格式的“早安”转换成 UTF-8 格式为“鏃╁畨”,在 BIN 中搜索“鏃╁畨”,找到 3 处,分别在 650AF0B 、 65A348 和 65A78B 。只要把这几个地方的名字改了,相应的铃声名称也会改变。例如改为晚安:
现在,我们既可以改铃声,也可以改名字了,虽然有点麻烦。过几天我或许会做一个自动工具来实现,等拿到数据线的吧。