>首页> IT >

最新消息:苹果离谱BUG!微信图片秒变色图,全机型都中招了

时间:2022-08-15 09:48:42       来源:雷科技

最近互联网平静得可怕,小雷作为高强度冲浪选手,都很难从中挖出好选题来写。

写手机曝光过于常规,大伙儿估计都看腻了,写App套路深挖吧,前阵子才写过,不宜频繁输出。

现在实在没活儿了,咋办呢?我选择直接摆烂,在办公室酣然入梦。


(相关资料图)

咳咳,开个玩笑嚯。

其实遇到没啥选题好写的时候,我都会问问神奇的哔哥,他老人家冲浪经验丰富,总能整出绝世好活。

像几个月前的《利用钓鱼网站获取对方IP定位》选题,就是哔哥一手策划出来的。

而今天哔哥再次挺身而出,这次已经不能说是“好活”了,简直可以用“离谱”来形容...

事情是这样的,哔哥一大早给我发了一张图片,咋一看就挺平平无奇。

不就是“HELLO WOROD”嘛,学C语言的时候我还天天打呢,这能搞出啥玩意来啊。

眼看着没事儿发生,我便开始无情嘲讽哔哥只能整烂活儿。

然而打脸总是来得如此及时...

哔哥让我分别用安卓版微信和iOS版微信查看图片,看看有啥不同。

在作对比之前,小雷满脸不屑,心里想着“就这”?

毕竟我作为专业搞机佬,用安卓iPhone双修也不是一天两天了。

两个系统的微信更新速度可能有差异,但功能几乎一致,像聊天和发图啥的,更是非常基础的功能,不可能搞区别对待的。

So,就这么简单的“查看图片”,难不成还能出啥幺蛾子?

于是乎,小雷先是用安卓微信打开了哔哥发来的图片。

放大看原图后,图片依然没有改变,满屏都是“HELLO WORLD”。

接下来,我又拿出抽屉吃灰已久的iPhone 11,看看会有啥情况发生。

把原图发送到iPhone上的微信小号并点开,神奇的事儿发生了。

小雷瞅见,“HELLO”没有任何变化,但下面一行的“WORLD”居然变成了“APPLE”...

这下子可把小雷整懵了,这微信总不能区别对待吧?

为了排除偶然性,小雷还找上好几位手持iPhone的同事一起测试。

结果吧,同一张原图,他们的微信所显示的图片内容都是“HELLO APPLE”。

安卓这边则与开头一致,依然是熟悉的“HELLO WORLD”。

不仅小雷自己懵了,连那几位用iPhone的同事都开始怀疑人生。

那么问题来了,这是微信对安卓和iOS进行区别对待,还是安卓或iOS某一方出了问题?

或者换个问法,原图到底是“HELLO WORLD”还是“HELLO APPLE”?

真要刨根问底,要解决的问题还真的不少,小雷为了尽快解密,便用了五毛钱巨款贿赂哔哥。

好在哔哥也是个老实人,收钱办事毫不含糊,当场就详细解析了一波。

先从简单的说起,安卓和iOS微信图片显示不同,并非微信的问题,也不是安卓的问题。

真正有问题的,其实是苹果一直沿用的PNG解析器,而这个图片解析器又用在了MacBook和iPad等设备。

没错,咱们平时所见到的图片,都是被解码过的。

所以理论上来说,在苹果所有智能设备上看上面的图片,都会显示“HELLO APPLE”。

而安卓和Windows等“非苹果系”系统,看到的则是“HELLO WORLD”。

Windows微信所显示的图片内容

至于具体原理嘛,小雷后面会展开细聊,咱们先解答下面这个问题:

既然安卓和iOS看到的是两张图片,那么哪一张图片才是原图?

其实严格来说,它俩任意一张都可以是原图,因为那张图是被加工合成过的。

小雷也特意去问了下哔哥,发现实际操作还挺简单。

咱们可以用下面这个卡苹果Bug的开源工具,亲自动手制作一张在安卓与iOS上显示完全不同的图片。

在加工合成前,小雷得提前准备好两张图片。

一张是【苹果设备看到的图】,另一张是【非苹果设备看到的图】。

这个环节估计大伙都懂的,针对性展示嘛。

图片准备好后,咱们可以利用Github上一位国外老哥的开源工具做图整活。

不过怎么说呢,合成过程很简单,但前期准备稍嫌麻烦,很多小伙伴可能会卡在【python配置】那一步。

所以今天就不详细讲解合成过程了,要是大伙实在感兴趣,小雷再另开一期文章单独讲解。(经典画饼)

那么,掌握了这种玩法后,我们又能搞出什么骚操作呢?

小雷看到,有不少网友用于搞黄色,利用BUG完美躲过审核。

但这事儿可太刑了,建议大伙都别乱搞...

小雷倒是想到了更刺激的玩法 -- 午夜惊魂。

实现起来很简单,只需准备一张恐怖图片作为【苹果设备看到的图】,再用动漫妹子图作为【非苹果设备看到的图】。

经过简单合成,一张表面人畜无害,打开后让iOS用户吓个半死的图片就出炉了。

小雷当场就把合成图,发给在用iPhone刷微博的同事,很快迎来了一句“草”。(指一种植物)。

不过还是得提醒小伙伴,使用场景仅限于朋友之间恶搞。

用在不正经的用途上,肯定是违法的。

接近结尾,小雷和大伙聊聊这个开源工具的具体原理好了。

制作这工具的开发者老哥可谓是“无心插柳柳成荫”,他本来想编写自己的多线程PNG解码器。

结果中途出了不少错误,其中最为严重的Bug就是:

decompress(a + b) != decompress(a) + decompress(b)

啥意思呢?他把一张合成图片解码后,发现在不同的设备上看到的图片是不一样的。

在百思不得其解的时候,他想到:为啥不去问问神奇的苹果呢?人家苹果工程师的水平比自己高得多啊。

于是他就去顺手去查了波资料,想看看苹果是如何多线程解码PNG文件的。

不查不知道,他发现原来苹果也犯了同样的错误,才导致BUG出现在所有苹果设备上。

好家伙,某程度上来看,这位老哥的开发水平与苹果工程师五五开了。

而这个Bug其实不难解决,开发者老哥后来也说了,这是个百分百能修复的Bug。

但从目前的情况来看,苹果显然还没修复这问题。

不然小雷也不至于被哔哥秀得头皮发麻啊。

在小雷看来,苹果不修这问题,要么觉得代码改起来太危险,删错一行代码,白忙活一个星期。

要么是认为普通用户不会遇上这Bug,想着省事儿摆烂。

但说实话吧,这Bug还真的很容易被人利用。

举个最简单的例子,万一有人故意制作一张“安卓正常,iOS黄图”的图片大肆传播,那影响得多恶劣啊。

希望苹果上点心吧,连民间程序员都能修复的Bug,堂堂国际大厂不可能没能力修。

————————————————————————

兄弟们,这选题是几个月前屯的,一直没机会发。

刚上Github看到,苹果似乎在最新的iOS版本中修复了这问题,所以想厂商玩合成图的小伙伴还是先停停手叭。

关键词: 区别对待 图片内容 查看图片 午夜惊魂 是不一样的