iOS 7 內的字典檔案解析

因為 iOS 7 的字典檔案是從網路下載的,所以腦筋動的快的人就已經在想說能不能增加自訂字典了。

加上內建只有簡體字典,沒有繁體,所以剛好名正言順的來研究一下。

下載的畫面就長這樣。

iOS 7 Dictionary

經過簡單的解析,可以得到一些網址,例如:

  • http://mesu.apple.com/assets/com_apple_MobileAsset_DictionaryServices_dictionary2/com_apple_MobileAsset_DictionaryServices_dictionary2.xml

這就是負責得到所有字典列表的檔案,是一個 XML 的 plist,裡面包含了所有字典的下載位置。

然後稍微找一下就可發現裡面的簡體英漢字典:

  • http://appldnld.apple.com/iOS7/091-9371.20130822.Punk3/com_apple_MobileAsset_DictionaryServices_dictionary2/a13b6582698ce2cf95d177472c2d988ec0a2c15d.zip

下載回來,解開,檢查一下發現應該跟以前的比起來沒什麼太大變化。

 

可是問題出現了,網路上面的 xml 是有 Signature 的,

好吧我就隨便改一改 xml ,然後丟到自己偽造的伺服器看看。

 

結果問題就出現了,因為 Signature 沒有簽對,系統不會讓你用你偽造的列表來抓字典檔

而會回去讀取這個檔案

/System/Library/PreinstalledAssets/com_apple_MobileAsset_DictionaryServices_dictionary2.xml

所以仍然得到原始的下載列表。(但是這個列表就沒有 Signature 了)

山不轉路轉,我於是直接把 zip 改成隨便一個預設字典檔案的名稱,結果發現仍然不能使用

因為偽造 zip 檔案的話, xml 裡面還有 zip 的 SHA-1 驗證碼,在下載完畢之後因為SHA1驗證不過而不給安裝...。

 

從這些現象我們可以看出兩件事情:

1. 未來 iOS 7 可能會增加更多的字典讓使用者下載,因為列表是可以上網抓的

2. 目前不能自己加字典進去,因為系統會檢查列表跟字典檔是否修改過

 

所以除了直接修改掉 /System/Library/PreinstalledAssets/com_apple_MobileAsset_DictionaryServices_dictionary2.xml(需JB之後才能得到)

或者破解 Signature,目前好像就沒有其他辦法了 QQ...

 

PS. 推友 n__ny 指出,可以把這些字典丟進去  OS X 裡面

只要你把 zip 下載下來解開,之後把 .dictionary 的檔案丟進去 Mac 的 /Library/Dictionaries 裡面就可以用了XD

發佈留言