昨天看到一个贴子 一张图片能让 iOS 系统重启,通过微信等社交软件可以快速进行传播。对这张图片非常感兴趣,于是开始研究,通过分析文件结构,发现 WechatIMG13720 1.jpg 样本文件有三个特点

(1) 对比其他照片多了一个 AROT 的结构,这个结构很可疑,信息如下:

只有 iPhone X 等高端机型拍摄的照片才会有 AROT 结构,而 iPhone 6 等低端的机型拍摄的照片没有 AROT 结构,可能出 iPhone 6 那时苹果还没加这类的功能。

(2) Exif 结构里的 ifdMainImage,找到 ExifTag 为 274, 有一个 usValue,这个值必须要是 1, 有时拍照保存的是 6, 不会触发漏洞,这个值和图片的显示方式有关。

(3) 样本图片之所以显示不完整,是因为scanData 数据被截断,而且没有结束标记,正常的 jpg 图片,最后是有结束标记(FF D9),但是样本文件却没有。

通过以上的三个特点,判断造成系统重启的原因是,由于图片被截断,系统在处理 AROT 结构时发生了错误。如果要构造一个能让系统重启的图片,使用 iPhone X 拍照,用 010 Editor 打开照片文件,查看确认 Exif -> ifdMainImage -> ExifTag(274) -> usValue 为 1, 然后删除最后的结束标记(FF D9),再把 scanData 删掉至少一半的数据,保存为新的图片文件,通过微信等社交软件打开,点击查看原图系统马上重启。

相关参考资料

http://www.hackerfactor.com/blog/index.php?/categories/1-Image-Analysis/P2.html
https://www.media.mit.edu/pia/Research/deepview/exif.html
Author: exchen

原文地址:https://www.exchen.net/ios-jpg-system-crash.html

加载异常图片导致系统重启之迷相关推荐

  1. 图片加载异常兜底方案

    背景 网络环境总是多样且复杂的,一张图片可能会因为网路状况差而加载失败或加载超长时间,也可能因为权限不足或者资源不存在而加载失败,这些都会导致用户体验变差,所以我们需要一个图片加载异常的兜底方案. & ...

  2. Android加载大图片OOM异常解决

    Android加载大图片OOM异常解决 参考文章: (1)Android加载大图片OOM异常解决 (2)https://www.cnblogs.com/jevan/archive/2012/07/05 ...

  3. 解决ImageLoader加载HTTPS图片证书校验异常问题

    解决ImageLoader加载HTTPS图片证书校验异常问题 参考文章: (1)解决ImageLoader加载HTTPS图片证书校验异常问题 (2)https://www.cnblogs.com/cs ...

  4. 【转载】Android加载大图片OOM异常解决

    官方资料: https://developer.android.com/topic/performance/graphics/load-bitmap 思路 先测试未知来源图片的尺寸和MIME文件类型; ...

  5. 短视频系统源代码,加载本地图片和加载网络图片

    在短视频系统源代码中,上传照片时会涉及到加载本地图片或加载网络图片的情况,下面介绍一下相关代码 从布局开始 <?xml version="1.0" encoding=&quo ...

  6. miui系统负一屏快递详情“显示数据加载异常,请点击重试”的解决方法

    miui系统负一屏快递详情"显示数据加载异常,请点击重试"的解决方法 1.下载链接中,后缀为xml和bak的两个快应用服务框架的备份包 2.使用小米,设置 – 本地备份 功能 随便 ...

  7. Android启动系统自带裁剪功能报错提示——无法加载此图片(已解决)

    我们在用系统自带的裁剪功能去裁剪图片的时候经常会报错--无法加载此图片 往往这类报错出现在拍完照之后打开裁剪功能然后就出错了 原因就是在于没有访问的一个权限,需要在启动之前设置权限 通常是创建一个In ...

  8. Android 系统(167)----Glide加载圆角图片的方法

    Glide加载圆角图片的方法 现在在市面上很多App的UI设计都会出现圆角图片的显示.Glide本身也提供了圆角图片的加载方式.但是我们在开发中有可能遇到只要顶部展示圆角,或者某一个角是圆角.这样的需 ...

  9. Android 高效加载大图片

    来源:http://www.open-open.com/lib/view/open1389755918242.html 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状 ...

最新文章

  1. [技术回顾系列]--认识WebService全貌
  2. loj#2340. 「WC2018」州区划分
  3. coursera_ML_1
  4. 如何充分利用开源项目_5个技巧:在开源项目中利用以用户为中心的设计
  5. android elf 加固_APK一键自动化加固脚本
  6. MySQL裸机性能测试(2021)
  7. 一个非常感人的爱情故事
  8. 三个视频教你如何找到另一半
  9. vscode缓存清理
  10. Keil 中“last line of file ends without a newline”的解决
  11. java计算机毕业设计特色农产品供需销售系统源码+数据库+系统+lw文档+mybatis+运行部署
  12. 一个行程问题与对应的数列求和
  13. Java物流项目第五天 数据聚合服务开发(pd-aggregation)
  14. 二进制部署Prometheus及监控服务
  15. OPengl实现小球围绕大球旋转的效果
  16. java官网以及java官网下载地址
  17. 练习3-4 统计字符 (15分)
  18. 1. Jewels and Stones (宝石与石头)
  19. 数字电子技术考试知识点总结
  20. zabbix 安装(略)

热门文章

  1. 通过JAVA对HDFS进行操作管理插件
  2. 洛谷P3195 [HNOI2008]玩具装箱TOY
  3. Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决
  4. C#操作项目配置文件
  5. Poj2480欧拉函数
  6. JSPX不同按钮调用同一个页面
  7. Day14作业 三、编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包)
  8. 牛客网(剑指offer) 第七题 斐波那契数列
  9. 左连接 和右链接的区别,内连接和外连接的区别
  10. C语言中能运算符重载吗,C++语言中什么运算符不能重载