iPhone短信的伪造

iOS的短信存放在/private/var/mobile/Library/SMS/sms.db中,是SQLite形式的数据库。而且普通的mobile用户有写权限。这就使得短信伪造成为可能。在一个小时的努力之后,终于成功伪造了一条短信。

sms.db很容易就可以下载到本地并使用SQLite Browser查看。可以发现主要的表有三个,message存储各个短信的内容,msg_group存储会话的相关信息,group_member存储各个会话的参与成员。果断修改message表,果断得到报错找不到read()函数。

read()是个什么鸟?上网搜了一下发现苹果果然在里面做了手脚。在数据库中有数个trigger,当试图更新/插入/删除message表的条目时,它会调用一个read()来更新未读短信数。只有通过SDK中一个未公开的函数来进行短信操作时,这个read()才能被正常调用,否则trigger无法正常执行,对数据库的更改也不能完成。(但印象里SQLite的trigger不支持外部函数,这个read()到底是个什么鸟还是不太清楚,有知道的烦请告知)

好在对于学过数据库的CSer来说这也不是什么问题,果断drop trigger哐哐哐就能改了。上网搜了一下发现原有的trigger还有维护数据一致性的作用,可以重定义它们来简化后续的插入工作。

在重定义trigger之后就可以进行数据表的修改了。很容易就能得到图中所示的效果。但是因为现在没有了read()函数来进行未读信息的维护工作,短信的未读条数显示好像有点问题。所以目前的方法只适用于短期骗骗人,如果长期用的话还是用系统自带的trigger比较保险一些。

P.S. 如果自己想尝试的话请事先做好备份工作,把自己的小iPhone搞残了搞挂了搞成砖头了,我是不负责任滴。

posted on   grapeot  阅读(8579)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述

导航

< 2011年3月 >
27 28 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

统计

点击右上角即可分享
微信分享提示