這篇算是拖了大半年的教學吧XD
由於很多人會問說,該如何從舊的手機匯入簡訊到iPhone,
或者iPhone簡訊消失了該怎麼手動增加...之類的,
所以皮樂就來教大家如何來修改你的iPhone SMS吧。
在開始之前皮樂必須先嚴正聲明:
所有關於SMS的修改教學僅供個人備份、匯入、回復簡訊使用,
請勿利用任何的方式,去修改、創建未經真正傳輸所得到的簡訊,
或者在未經他人同意下修改、備份他人簡訊,
否則要是出事情的話,有可能將會以偽造文書罪處理。
在修改之前,請準備以下的知識以及工具:
1. 一台JB過的iPhone
2. iPhone 簡訊資料庫 sms.db (在 /User/Library/SMS 底下)
3. 一台可以安裝Firefox 4.x以上版本的電腦(不限作業系統)
4. 基本的iPhone檔案權限管理知識
5. 基本的英文能力
首先,請對你的SMS資料庫作備份,以防萬一,
另外,建議仔細檢查一下是否有未傳成功的簡訊,
有的話請傳出去或者刪除,否則可能會造成修改後的檔案出錯
之後開啟Firefox,到這裡安裝外掛,以修改sms.db。
安裝之後在工具裡面開啟SQLiteManager,
接著在SQLiteManager裡面開啟你的sms.db,
在左邊欄位找到Triggers這項,把它展開,
每個人的Triggers數量可能不同,有人有8項,有人只有7項,
不過沒有關係,操作方式都是一樣的。
現在對著 insert_unread_message 、mark_message_read、mark_message_unread、delete_message
這四個Trigger按右鍵,選擇Drop Trigger,使得簡訊的保護機制被刪除。
接著按照下圖指示,去瀏覽簡訊。
點簡訊內容兩下,就可以修改了,按右上角的Add則可以新增簡訊。
接著介紹各項欄位的用處:
(有些人可能沒有最後一項smsc_ref,不過同樣不影響修改)
ROWID:
簡訊在資料庫序列號,為獨一無二,不可重複,
只要不重複的話可以隨意填寫,但是要注意以後收到的簡訊的ROWID都會是以最大值+1開始起跳,
所以一般來說,如果新增簡訊的話,就是填目前的ROWID最大值+1就好了,修改簡訊內容的話則不需要理ROWID。
address:
電話號碼,格式以你資料庫顯示的為準,有些有+886,有些則沒有,
無論是你傳出去,或者對方傳給你的簡訊,這欄一律都是填對方號碼。
date:
簡訊的時間,是UNIX格式,可以在這裡轉換成一般人看得懂的時間。
要注意的是,時間是以GMT標準時間顯示,所以在台灣的話,就請自行加8小時,換算回去的時候也是一樣。
據網友測試,時間一定要照舊到新排列,也就是說ROWID比較大的項目,其date一定也必須比較大,
這一點我還沒有試過,所以無法確認是否一定得這樣作才行。
text:
簡訊內容,可以使用換行符號。
flags:
2是對方傳來,3是你傳出去的。
replace:
不用管,填0就是了。
svc_center:
不用管,留者空白就是了。
group_id:
同一個電話號碼的group_id是一樣的,請按照對方的group_id來填寫。
association_id:
只會出現在flags = 3的情況出現,一般來說會跟date的值一樣,
不過填0似乎也不會怎樣。
height:
填0。
UIflags:
大部分是4跟0、少數會是5或者其他數字,填4或0應該就可以了。
version:
總是0。
subject:
MMS的主旨,如果是一般簡訊的話請留空。
country:
依照你其他的簡訊的值來填,
我的情況是無論我在國外還是對方在國外,都是顯示為tw。
(此項目可能跟電話號碼格式顯示方式有關,不確定)
接下來兩項保持為空,
最後的read:
1為已讀該簡訊,正常來說就填1吧。
修改完畢之後,也不用存檔,因為在修改的時候就會自動儲存了...
接著我們要作的是把刪除的Trigger還原。
接著請一項一項複製貼上到Enter SQL底下的欄位中,之後按下RunSQL。
(請一項一項複製、執行,勿一次執行全部)
1.
CREATE TRIGGER insert_unread_message AFTER INSERT ON message WHEN NOT read(new.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) + 1 WHERE ROWID = new.group_id; END
2.
CREATE TRIGGER mark_message_read AFTER UPDATE ON message WHEN NOT read(old.flags) AND read(new.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) - 1 WHERE ROWID = new.group_id; END
3.
CREATE TRIGGER mark_message_unread AFTER UPDATE ON message WHEN read(old.flags) AND NOT read(new.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = new.group_id) + 1 WHERE ROWID = new.group_id; END
4.
CREATE TRIGGER delete_message AFTER DELETE ON message WHEN NOT read(old.flags) BEGIN UPDATE msg_group SET unread_count = (SELECT unread_count FROM msg_group WHERE ROWID = old.group_id) - 1 WHERE ROWID = old.group_id; END
之後看到Trigger數量會回到原本修改前的數量就是成功了,
接下來,把sms.db丟回去iPhone中,修改權限(可以使用iFile) 為 755(或777),Owner跟Group為mobile,
最後一定要Respring或重開機,簡訊資料庫才會真正載入進去,
接著請隨便發一封簡訊,發送成功之後刪除該簡訊,
再關閉簡訊程式,重新開啟簡訊程式,進去看看刪除的簡訊是否真正刪除,
如果以上兩個測試OK的話,代表修改完畢的簡訊資料庫是正確,沒有問題的。
本次教學就到這邊,
下次會教大家如何大量匯入簡訊。
發佈留言