首页
论坛
课程
招聘
雪    币: 9636
活跃值: 活跃值 (308)
能力值: ( LV12,RANK:830 )
在线值:
发帖
回帖
粉丝

[原创]一张图片在微信中点开让苹果手机重启 的简单分析

2019-5-29 15:19 15848

[原创]一张图片在微信中点开让苹果手机重启 的简单分析

obaby 活跃值
19
2019-5-29 15:19
15848

刚看到这个的时候就尝试了一下,嗯,很成功,重启了~~

010编辑器打开图片文件会发现少了一部分数据。


对比正常的jpeg文件:


一个典型的数据格式为:

JPEG SOI : FF D8  //  图片起始

JPEG APP0:0xFFE0  // 

    APP0 SIZE:1D 23  //当前标记的长度

    JFIF Flag:JFIF  // JFIF 标识

    VERSION:// 版本号

    ATTRIBUTION: // 长宽、DPI等信息

JPEG APP1: FF E1

  APP1 Size : 1C 45  //  注意:前面这三个WORD都是big endian的

  EXIF Flag : 'Exif', 0, 0

  ---------

  TIFF : // TIFF格式的EXIF数据

  ---------

JPEG APPn: FF En // APPn 标记,可选

DQT :0xFFDB  //Define Quantization Table,定义量化表

SOF0:0xFFC0  //Start of Frame,帧图像开始

DHT:0xFFC4  //Difine Huffman Table,定义哈夫曼表

SOS:0xFFDA  // Start of Scan,扫描开始 12字节

压缩数据

JPEG EOI : FF D9  //  图片结束

开始猜测是否是由于缺少了结束标记导致的,于是我找了一张图。


去掉了最后的结束标记,事实证明并没有导致崩溃,但是却意外发现,如果只删除最后的结束标记会导致微信安卓版无法发送图片,并且安卓自带的相册无法显示图片。


如果发送给朋友则会直接发送失败,一致卡在0%。


并且这个图无法发布到朋友圈。


图片的这个样式其实在网络状态较差的情况下还是挺容易发现类似的现象的,如果网络有问题图片在加载的过程中就会出现只显示一半的情况。那么实际这个图的原始大小应该远大于1.5m应该是丢失了部分数据。按照画面比例实际丢失的数据大约有2/3。但是至于为什么崩溃猜测可能和系统解析jpeg的库有关,昨晚想调试下,结果发现下载的支付宝咂壳不完整,monkeydev无法正常编译安装,手头也没越狱的设备只好作罢。

猜了一下可能的原因:

1.       图片格式要求jpeg,

2.       数据长度

3.       图片的宽高

上午的时候收到消息说现在可以随意构造图片了, 并且发了个图过来。试了一下确实同样会导致重启。对比了一下发现两个图片的数据头部是一样的,也就是说后来的这张图与最开始的图除了图片的数据不一样其他的数据都是一样的。现在还不知道具体是在解析那些数据的时候出现了问题,但是可以肯定的一点是,基于这个文件头可以构造别的图片了。

由于jpeg包含了分辨率,位深度, 单位分辨率相关信息,所以在构造这个图片的时候要保证数据来源图片的分辨率和原始图片的一致:


如果不一致可以使用ps等软件进行格式和分辨率转换。

两者一致之后剩下的工作就比较简单了,就是替换图片的scandata字段。该字段从FFDA(偏移850h)开始,到结尾的FFD9(偏移18CFF0)结束.

建议使用010 editor来进行处理,找到要替换数据的scandata字段,复制,粘贴到旧文件的scandata字段,删除18CFF0之后的数据保存即可。


测试图片链接:http://hlzjc.gdcyl.org/kindeditor/attached/image/20170627/2017062715330265265.jpg

合成之后的效果:


并且这个数据并不是必须是真实的数据,直接权0填充掉scandata也是可以的:


这样一个能让iOS重启的图片就做好了,如果有条件可以找个iOS设备调试下看看具体的崩溃地址,这个崩溃太及时了,系统没有办法记录app的崩溃日志,所以要看崩溃日志貌似也只能调试,等再有时间了拿真机去调试下看看。

参考链接: https://blog.csdn.net/shelldon/article/details/54144406

原始地址:https://bbs.pediy.com/thread-251582.htm



[看雪官方培训]《安卓高级研修班(网课)》9月班开始招生!顶尖技术、挑战极限、工资翻倍!

上传的附件:
打赏 + 5.00
打赏次数 1 金额 + 5.00
 
赞赏  kanxue   +5.00 2019/05/29 感谢分享~
最新回复 (15)
雪    币: 1882
活跃值: 活跃值 (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
朱年吉祥 活跃值 2019-5-29 16:06
2
0
good
雪    币: 13459
活跃值: 活跃值 (44)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
wsc 活跃值 2019-5-29 16:39
3
0
666
雪    币: 1936
活跃值: 活跃值 (65)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
UzJu 活跃值 7 2019-5-29 16:40
4
0
66666666666
雪    币: 4783
活跃值: 活跃值 (1032)
能力值: (RANK:40 )
在线值:
发帖
回帖
粉丝
Editor 活跃值 2019-5-29 16:49
5
0
666 
雪    币: 227
活跃值: 活跃值 (17)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
大王叫我挖坟 活跃值 3 2019-5-29 19:16
6
0
下面1万个赞!!66666666
雪    币: 8140
活跃值: 活跃值 (189)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
pureGavin 活跃值 2019-5-29 20:53
7
0
膜拜大佬
雪    币: 619
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
cmputer 活跃值 2019-5-30 16:56
8
0
缺一个苹果手机测试
雪    币: 436
活跃值: 活跃值 (98)
能力值: ( LV3,RANK:10 )
在线值:
发帖
回帖
粉丝
BkHumor 活跃值 2019-5-31 18:03
9
0
雪    币: 1056
活跃值: 活跃值 (39)
能力值: (RANK:160 )
在线值:
发帖
回帖
粉丝
xiaohang 活跃值 3 2019-5-31 20:49
10
0
然而并没有奔溃,是和ios的版本有关吗?
雪    币: 9636
活跃值: 活跃值 (308)
能力值: ( LV12,RANK:830 )
在线值:
发帖
回帖
粉丝
obaby 活跃值 19 2019-6-3 09:05
11
1
xiaohang 然而并没有奔溃,是和ios的版本有关吗?
是的,并且貌似和地区语言也有关系
雪    币: 34
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_ltmnncbc 活跃值 2019-6-3 11:04
12
0
你好,这张图片保存在相册里了,怎么删除?
雪    币: 9636
活跃值: 活跃值 (308)
能力值: ( LV12,RANK:830 )
在线值:
发帖
回帖
粉丝
obaby 活跃值 19 2019-6-3 13:23
13
0
mb_ltmnncbc 你好,这张图片保存在相册里了,怎么删除?
相册的选择功能,选择图片执行删除,或者找个助手删除~
雪    币: 199
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_ixcvkwod 活跃值 2019-6-4 20:17
14
0
这个会被当作漏洞利用吗
雪    币: 207
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
Wuli_484316 活跃值 2019-6-12 00:06
15
0
所以这个适用于哪些iOS版本啊
雪    币: 211
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
baiyik 活跃值 2019-6-19 10:43
16
0
iphone xs 12.3.1亲测可以
游客
登录 | 注册 方可回帖
返回