之三:铃声名称、铃声名称长度修改
1、确定铃声名称地址
首先我们需要在手机中察看铃声名称,对于S308 G2,内置铃声第一首歌名为Arabesque,最后一首歌名为Cat,这样我们就可以利用SAMSUNG DIY来查找铃声名称地址了。见下图:
这样我们可以知道铃声名称的地址如下:
英文铃声名称地址 0x0014ABAC - 0x0014AD9A
简体中文铃声名称地址 0x0014CC14 - 0x0014CF45
繁体中文铃声名称地址 0x0014EB90 - 0x0014EEF5
为便于修改,我们可以将这部分的代码从手机里备份出来
这个大家应该都会,不用细说了!
2、查找铃声名称长度地址
与查找铃声指针同样,这里需要使用16位码查询,上面我们已经找到了铃声名称的地址,以英文名称为例,第一首名称的开始地址为0x0014ABAC,这样做:
通过找到的数据分析,我们会发现铃声名称长度是通过连续记录铃声名称的开始地址来表现的,也就是说:后一个铃声名称开始地址减去前一个铃声名称开始地址得到的值就是铃声名称的长度。
以上图查找到的数据为例说明:Arabesque这个铃声名称开始地址为0x0014ABAC,而图中随后出现的第二个铃声名称开始地址为0x0014ABB8,则H(B8-AC)=H(C)=D(12),Arabesque占用9个字节,其后还后三个□□□(ASCII码00)。这样每个铃声名称长度地址实际占用4个字节,总共有42个铃声,可以计算得到英文铃声名称长度地址为:0x00360E14 - 0x00360EBB
同样的方法可以得到简体中文、繁体中文铃声名称长度地址为:
0x003619E0 - 0x00361A87及0x003625AC - 0x00362653
好了,我们把这段代码也从手机中导出来:
3、铃声名称长度修改
因为代码不长,同样可以采用SRE EDITOR直接编辑,见下图:
这是我已经修改完了后的截图:
修改是一定要根据你需要的铃声名称长度计算好每个铃声名称的开始地址。具体计算可以利用windows自带的计算器进行。
4、修改铃声名称
英文系统中每个字母占用一个字节,因此比较好改:
下面是我已经改好的:
中文系统中每个符号占用了2个字节(即使你的铃声名称是英文的,每个英文字母也将占用两个字节),因此修改时略有难度。还是来看图:
看我改好的例子:
繁体中文与简体中文的修改方法完全相同。
注意:当中文系统下铃声名称也为英文的情况下才能发现上面的A1补位。如果铃声在手机中就是显示为中文的,则直接调用字库,无法用以上方式修改了。
不过这个也无所谓了,对于同一个版本,我们只需要修改铃声名称一次,以后我们就可以利用SAMSUNG DIY 软件的字符串替换功能该铃声名称了~~~~~~~~~
对了最后要说明一点:我在以上方法中只定义了9首铃声,但即使尚在手机菜单中有42首歌,将其他33首铃声的指针及铃声名称均设为空了(用代码00填充了),这样刷入手机后,手机菜单中仍会保留33首铃声名称的空位,如果在手机的铃声设置菜单中进入这些空位,会导致所有铃声不能发音,但关机重起后会恢复正常。这就是我在前面的图中提到的BUG乐~~~~~~~
目前想到的解决办法是保证替换后仍有42首铃声,小S码片中还有很多空位,可以用来放铃声的哦
好了,这个就到这里为止吧。谢谢大家的支持!!!!