其實導致手機出現這些情況的只是幾個經過特殊編寫過的.imy音頻文件(就像sql註入
時構造的特殊語句壹樣)
關於.imy文件,我對比了很多同樣文件,又參考了網上的相關資料,發現無論是正常的.imy文件還是那些“特殊”的.imy文件,都遵從這樣的格式:
BEGIN:IMELODY
VERSION:<version>
FORMAT:<format>
[NAME:<ring_name>]
[COMPOSER:<composer_name>]
[BEAT:<beat>]
[STYLE:<style>]
[VOLUME:<volume>]
MELODY:<melody>
END:IMELODY
(註:[]中為可選項 ;<>中為變量)
說明:
(1)<version>:版本號。
(2)<format>:格式編號。取值CLASS1.0|CLASS2.0有的是CLASS1.2)
(3)<ring_name>:ASCII字符,鈴聲名
(4)<composer_name>:作者名
(5)<beat>:節奏。取值從25到900bpm(拍/分鐘),越大節奏越快,缺省120
(6)<style>:風格。取值為S0|S1|S2(S0:普通。每音符間有暫停,音符與暫停時間比為20:1,為缺省值;S1:持續。每音符間無暫停;S2:斷奏。音符與暫停時間比為1:1
(7)<volume>:音量。取值V0到V15。V0為靜音,缺省V7
(8)<melody>:旋律字符串
關於重復特效(下面會提到)"("+<melody>+"@n)" 其中的n取值從0到無窮大
比如壹個長度為7秒的手機鈴聲test.imy:
BEGIN:IMELODY
VERSION:1.0
FORMAT:CLASS1.0
MELODY:*5e4f4e4d4c3*4e3g3*5c3c4d4c4*4b4a3c3f3a3a4b4a4g4f3e3f3a1g3e0
END:IMELODY
長度僅為127字節,相當精簡。而壹個讓手機壹直振動的音頻文件“vibe.imy”則更小,僅111字節:
BEGIN:IMELODY
VERSION:1.2
FORMAT:CLASS1.0
BEAT:100
MELODY:(ledoffledonbackoffbackonvibeon@0)
END:IMELODY
可以發現,文件的格式極為相似,文件頭和文件末尾都聲明為“IMELODY”文件,所不同的只是MELODY:XXXXXXXXXX處的不同