转载请注明作者:n000b
/ ], Q' |9 I$ }& A
; R0 {! d# a" R6 c; n7 c' R; [之前看到很多讨论1.1.1铃声的方法,基本方法都是从Rongtones.plist入手(包括iToner、SendSong、ModMyIphone方法等),欺骗iPhone认同自定义铃声,不过都有一个问题,就是有些铃声可以选取,就是没声音。这里提供一个方法,给铃声验证程序打补丁,简单有效,我试过几个铃声,包括之前用改Ringtones.plist不成功的,还没有发现没有声音的。
8 d: Q, }% G/ I! S0 ?- t Q
/ a5 u6 M5 j) ~
这个方法是由Elite Team提供的,感谢bgm370的逆向分析。
0 n n! g# ]& _" P2 R; x5 D/ \
; e4 @8 C/ y5 b& e- c' H
注意:不支持中文文件名(无声),感谢kit222指出这一点。! ^2 \& g( i: H5 d' \! R s
2 @0 m; V! u, R( b7 y使用方法' |/ h9 J2 I+ w& |9 y4 o
1 R$ d& s) L! z6 M+ ^! g
下载这个打过补丁的文件:
t; s6 W" K, O3 F( O) j# ^8 W+ `( V" G& a, X5 w解压后放到:
复制内容到剪贴板
代码:
/System/Library/Frameworks/MeCCA.framework/目录里面,替换掉原来的文件(
检查文件属性,一定要有Execute属性),重启动就生效了。
7 h" O5 p& E) e- n& c) m
: n2 M( m. A' V" `+ o' d- C铃声制作方法
4 ~$ {) R" t% ^/ `8 C铃声需要用iTunes转换成.m4a(AAC)格式,然后名字改成:铃声名字<空格>.m4r。其中<空格>是一个空格字符,就是说在.m4r之前加一个空格。例如:
% r0 Y" B" I& k' G6 D3 F对于铃声:
复制内容到剪贴板
代码:
Love is Blue.m4a改名成为:
复制内容到剪贴板
代码:
Love is Blue .m4r这个空格非常关键,它是补丁用来判断是否需要采用AAC格式的依据。
- U. @8 M [3 a( x2 q
l+ K+ F7 l0 y改好后上传到:
复制内容到剪贴板
代码:
/Library/Ringtones目录中,立即就可以在Settings -> Sounds里面看到和使用。
* R) Y8 s/ X5 S1 }- b7 N" r& u' R
" S7 T. x- A# D9 D如果你不想节约系统分区的空间,以下步骤可以跳过。
. c) @# E( T1 Y# \) V# J. f
5 O7 O7 o1 g* c5 Z# X; K空间问题, f4 @ b6 N" h1 l7 q
. O' {3 U1 ^$ f8 v5 \由于/Library/Ringtones是位于系统分区的,空间只有300MB,如果想存大量的铃声就难了。可以把铃声移到用户分区,然后在系统分区用符号连接指向用户分区。操作方法如下:
7 e9 ?; E; ^1 f( O# j, `
- y5 W3 z R. C7 x) G* g用SSH登录到iPhone(或者用MobileTerminal),然后输入以下命令(仔细检查后再输入,不要告诉我你不小心把系统文件干掉了啊):
复制内容到剪贴板
代码:
mkdir ~/Ringtones (在用户分区建立铃声目录)
cp -r /Library/Ringtones/* ~/Ringtones (把所有铃声复制到用户目录)
rm -rf /Library/Ringtones (删除系统分区的铃声目录)
ln -s ~/Ringtones /Library/Ringtones (将系统分区的铃声目录指向用户分区)不需要重启,改动立即生效,以后添加铃声既可以加到/Library/Ringtones,也可以加到/var/root/Ringtones,结果一样,都实际存放在/var/root/Ringtones目录中。
! h9 Z" c5 w+ H. X
# l4 i, B7 g- H
补丁原理
2 _/ j8 G8 g }! `3 j7 ~( {/ E5 A7 y3 B5 h
在1.0.2环境下,铃声是通过把.m4a改成.m4r欺骗系统认为是合法铃声来实现的。在1.1.1下,这个方法失效了,因为1.1.1不再支持用.m4a作铃声,而只采用经过保护的.m4r格式铃声。
; f$ E- R3 A6 X, ]; N& F f- k# ^4 ~, G6 ?6 ]0 e" W; b
这个方法是从MeCCA入手打补丁,原理是铃声验证打补丁,并插入一个特殊文件名检查,如果发现特定的格式(我们预先规定的),就告诉系统需要播放未受保护的AAC格式,从而使定制铃声成为可能。
, o) f" H# _) q& K, {
% V1 J# E% e E2 `* j {补丁之前的程序逻辑是:
" M" X6 V4 g8 Y. }
* ^% X8 ?+ d, z+ @, z [ Q, `+ ?/ s. S" h% V( P5 U2 p
补丁之后变成了:
4 Z/ I/ u( d) Q$ e1 x/ b9 x
: o! {4 g V8 p: w e: y5 ]# {/ @
' x& A, b5 o3 s& k
注意其中的:
复制内容到剪贴板
代码:
CMP R1, #$0x20这是这个补丁的关键。
; t6 K- |3 l/ s% e6 G
! s9 K1 P( b" Q/ c4 V( ~2 u+ T! n. ?[
本帖最后由 n000b 于 2007-11-9 11:02 编辑 ]