从技术角度看待某物APP私删用户视频事件

时间:2022-11-17 15:54:33

前言:

近来某物APP私删用户视频的事件闹得沸沸扬扬的,大体就是有个网友通过系统服务的提示,发现某物APP删除用户相册中的数据,从而认为偷删用户数据从而进行了曝光。

本文对事件本身和立场不做过多的阐述,我们只是从技术的角度来讨论下,对于APP来说,这种事到底是否真的可实现。

下面是用户的曝光:

从技术角度看待某物APP私删用户视频事件 

  

以及得物的官方反馈:

从技术角度看待某物APP私删用户视频事件

一.安卓系统磁盘空间介绍

首先我们介绍一下安卓系统中,磁盘空间的分布。

安卓底层的目录结构如下,

从技术角度看待某物APP私删用户视频事件

 

这么多目录,我们就不一一介绍了,重点介绍三个:

system目录:系统侧的空间,系统级APP,系统级皮肤包,FW层代码等等都在这个目录下。

sdcard/storage目录:sdcard属于一个快捷地址,它指向的真实地址是storage/emulated/0。如果有外置SD卡的话,应该就会有storage/emulated/1的目录。0这个目录,对应的就是我们经常用的,文件管理中可以看到的目录。

从技术角度看待某物APP私删用户视频事件

 

data目录:对APP的私有目录,我们平常安装的非系统级的APP,以及所有应用的私有数据,都保存在这个目录下。

data/app目录下,对应很多包名,其实这些就是我们手机上安装的非系统应用。我们看到base.apk文件,这个其实就是安装完成的APK。APK的安装的本质就是就是把APK这个压缩文件解压到一个指定目录而已。

data/data目录下我们可以看到,是区分包名的,每个包名只允许其对应的应用才可以访问,除了自身之外,就算是系统级的APP都不能访问,所以,我们可以把这块空间看做用户的私有空间,是独有的。

从技术角度看待某物APP私删用户视频事件

 

二.APP占用空间介绍

对于APP来说,一般会有三块空间,应用的数据一定会存储在这三块空间中。

1.私有空间,对应路径data/data/包名

上面有介绍,这块空间是每个APP私有的,其它APP是完全无法访问的。只有由APP自身对外提供。这块空间类似于APP的家,别人是不允许进来的。

举个例子,微信的聊天记录,就是存储在这块空间中。

2.独有空间但外部访问,对应路径sdcard/Android/data/包名

这块空间属于APP独有的,应用卸载后,这块空间也会被随之删除。但是这块空间并不私有,其它APP是可以访问并且修改的。这块空间类似于APP家门口的菜园子,理论上这块空间属于我,但是别人可以不经过允许就能进。

也举个例子,微信聊天记录中的图片,文件什么的,都存储在这块空间中。所以我们可以在相册中看到微信聊天中发出的图片。

从技术角度看待某物APP私删用户视频事件

 

3.公共空间,对应路径:sdcard/下非ANDROID开头的目录

这块空间属于所有APP共有的,所有的应用在申请权限后,可以对这块区域进行读写操作。我们使用相机拍的照片,视频,截屏,手机录音等等,都是在这块空间中。

当然,每个手机的具体目录位置有可能不一样,拿小米手机举例,手机截屏的目录就是:

sdcard/DCIM/Screenshots

从技术角度看待某物APP私删用户视频事件

 

三.某物事件技术讨论

好了,介绍完安卓的磁盘系统分布以及APP可使用空间后,我们回头来从技术的聊一下某物事件。

问题一,APP是否有权限删除用户视频?

这个自然是可以的。

我们上面有讲到,用户的视频,照片等文件,都保存在公共空间下,所以理论上,只要申请了对应权限,任何APP都可以对这块空间进行删改操作。具体要看系统

6.0之前不需要申请任何权限即可修改,

6.0到9.0需要申请WRITE_EXTERNAL_STORAGE权限

10.0需要在manifest中声明requestLegacyExternalStorage

11.0开始需要申请外置SD卡管理权限MANAGE_EXTERNAL_STORAGE

所以,无论你是安卓的哪个版本,只要申请了权限,就可以对外置SD进行删改操作。

问题二,能否定向的删除用户视频?

这个理论上也是可以做得到的,当然,我们这里只是谈能否实现,我相信某物时不会这么去做的,因为开发成本其实很高,但是收益却很低,毕竟现在很多手机都有云端存储图片视频的功能,只是删除了本地的图片视频没有任何意义。

谷歌有一个侧端机器学习框架Media Pipe,导入训练好的模型之后,可以动态的去分析图片,得出想要的结果。具体可以参看我的另外一篇文章::2022年谷歌开发者大会讲解

所以,在手机端动态的进行分析,删除目标视频或者图片,理论上是可以实现的。

问题三,华为是如何识别到APP删除用户文件的?

安卓系统中,分为用户态内存和内核态。如果用户只是对自身的内存进行操作,则在用户态处理。如果想进行跨进程通讯,比如想其它进程发消息/向后台服务发请求/操作本地文件等等,都必须经过kernel内核转发才行。所以如果想全盘的监控对本地文件的操作,或者网络请求状态等等,只要对kernel内核进行注入监听即可。

EBPF就是这样一门内核注入工具,编译完成后,他是运行在内核中的,可以完成对内核中操作的监听。所以,个人猜测华为有可能就是利用了类似EBPF这样的工具,来监控APP对文件的操作的。当然,这种工具稳吗?个人观点是没有那么准的,毕竟收集的信息其实有限,误报是完全有可能的。

问题四.IOS会有这种问题吗?

我认为是不会有的,因为IOS本身就没有公共空间这个概念,每个APP都只有独立的空间,所以自然不会出现APP1删除APP2文件的情况。当然这么多就一定好吗?感觉这个看个人理解了,在我看来,属于各有优劣吧。

声明:

本文只是单纯的从技术角度去讨论某物事件中,涉及到的技术点的可行性,并不代表作者本人的任何观点和立场。

文本请勿用于任何非法用途和立场。

欢迎技术讨论,拒绝网络暴力。