V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jeesk
V2EX  ›  Android

如何看待 root 设备污染日志的情况?

  •  
  •   jeesk · 142 天前 · 6409 次点击
    这是一个创建于 142 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 发现 8 成的崩溃日志是 root 导致的,比如允许了文件管理权限,但是是 fake permission, 就会导致应用崩溃。
    2. 还有其他的一些渲染问题,也会导致崩溃。 看了一下基本上就是 root 设备导致的问题。


    如果作为一个开发者发现每天都有 root 设备用户使用导致的崩溃日志, 你会怎么办?
    第 1 条附言  ·  141 天前
    本文一直在探讨一个问题是如何屏蔽一些 root 用户使用 hack 工具所带来的不合理的日志? 结果很大一部分人反而指责开发者滥用权限,还有的反而疑问为啥 root 用户这么多, 是不是你应用有问题。 还有一部分人不懂 saf 和文件管理权限的区别, 直接说你为什么不直接使用 saf 。哈哈, 突然觉得是多么的嘲讽。
    49 条回复
    winzkh
        1
    winzkh  
       142 天前
    要么不管不顾,要么加 root 检测
    HojiOShi
        2
    HojiOShi  
       142 天前
    虽然很久没用过了,但是我记得 Crashlytics 可以忽略不想管的 Crash 日志的,其他崩溃上报服务应该也会有这个功能吧。
    bkmi
        3
    bkmi  
       142 天前 via Android
    什么应用 root 用户占比这么高,正常 root 用户占比应该非常非常少
    Joshuahui
        4
    Joshuahui  
       142 天前 via Android
    跟用户挑明,不接受 root 用户的反馈,然后加 root 检测,root 用户可以正常使用但不记录任何崩溃日志,不要进行提示,防止绕过检测
    yanqiyu
        5
    yanqiyu  
       142 天前
    @bkmi 说明 root 出问题的概念远大于正常用户呗
    yanqiyu
        6
    yanqiyu  
       142 天前
    概念->概率
    efcndi
        7
    efcndi  
       142 天前   ❤️ 18
    作为一个普通的用户,我倒是在使用前会特别关注,你是不是要了很多不该要的 permission 。本来正常情况下,可以使用 fake permission 对付过去的,但是你却故意通过 crash 来降低这类用户使用的体验。

    你又是什么级别的 App ,竟然有权限要求用户不得在 root 过的设备上使用?

    如果你确实不允许 root 用户使用,希望自己在肆无忌惮非法滥用权限时不被发现,那就“拜拜呐您”!
    lslqtz
        8
    lslqtz  
       142 天前   ❤️ 2
    @efcndi 虽然但是, 我真不知道你从哪里看出来的“故意”通过 crash 降低用户使用的体验...
    lslqtz
        9
    lslqtz  
       142 天前
    fake permission 如果能导致崩溃, 那我觉得这个判断逻辑的健壮性可能还是不太够, 因为即使是正常设备, 也可以考虑磁盘空间已满之类的原因可能导致崩溃. 有权限读取/写入不代表实际能读取/写入. 所以, 在这一方面建议是优化逻辑, 增加程序的健壮性, 并给出用户可见的提示.

    而渲染问题这种, 一般是奇奇怪怪的魔改造成的, 对于这种情况, 更建议是在服务器侧日志收集处理时加入屏蔽, 而不是依赖于客户端侧的检测, 不然仍然有绕过检测打入服务器侧日志的概率. 当然, root 与否的检测也可以作为一个参考值传送至服务器.
    SunsetShimmer
        10
    SunsetShimmer  
       142 天前
    当用户不希望授权的时候,就不要主动要求授权。
    efcndi
        11
    efcndi  
       142 天前
    @lslqtz #8 前面的前提“你是不是”也没故意缩小字体显示啊。
    ochatokori
        12
    ochatokori  
       142 天前 via Android
    反馈给 fake permission 应用作者表示会出现应用行为不一致的问题
    nightwitch
        13
    nightwitch  
       142 天前
    如果能判断出来 root 设备的话直接把 bug 反馈的功能停了完事。
    jeesk
        14
    jeesk  
    OP
       142 天前 via Android   ❤️ 1
    @lslqtz 我都说了,正常的权限授予完全没有崩溃的问题, 看不懂中文是吧? 我从来没说不让 root 用户使用,你倒是会戴帽子呢? 竟然还有这么多人点赞, 震惊。

    你凭什么说我故意通过 crash 降低用户的体验?哪来的证据? 张口就来。魔怔了是吧。
    zoharSoul
        15
    zoharSoul  
       142 天前
    当然是修掉啊
    有 bug 不修不是 xx 么, 又不是修不了
    jeesk
        16
    jeesk  
    OP
       142 天前 via Android
    @lslqtz 比如我已经获取了文件管理权限, 但是发现部分 root 设备还是无法写入, 总不可能还要为所有用户单独写读写权限校验吧? 我可没这么闲, 我只想屏蔽他们的日志。
    jeesk
        17
    jeesk  
    OP
       142 天前 via Android
    @lslqtz 我可以告诉你,我的 app 权限从来都没有滥用过。
    Constantping
        18
    Constantping  
       142 天前   ❤️ 1
    @jeesk 你 @錯了。
    HojiOShi
        19
    HojiOShi  
       142 天前
    再来反刍一下。

    我以前写过一个普通用户和 root 用户都可以用的工具类 app 。针对这种情况,我采取的情况是双管齐下:能修则修,不能则忽略。

    比如 fake permision 这种,在代码中除了正常申请权限之外,还用 AppOpsManager 再进行检测;其他情况(我当时遇到的:缺系统服务,打不开活动,UI 不一致或者崩溃,还有其他甚至是有些我怀疑只有 Bit flipping 才能触发的异常),能修的也尽可能作出修复;不能修的,给错误 UI 和甚至直接 catch(Excpetion ignore)然后 kill 掉自己之类的手段也都用过。

    实在 catch 不了的,我当时用的统计服务只有一个 Crashlytics:它不仅能够忽略不想理会的日志,其它的过滤功能也是挺强大的,推荐使用这个。印象中记得除了组件更新速度过于频繁,没有什么别的缺陷。
    RikkaW
        20
    RikkaW  
       142 天前
    if (isRooted) log.disable 解千愁

    只要简单🉐判断是否存在 su 就差不多了,因为不太可能去针对所有人隐藏 root (

    当然也如 #9 #19 说的也是有道理的(((
    cwxiaos
        21
    cwxiaos  
       142 天前 via iPhone
    会 root 的用户通常应该很重视隐私,无论开发者滥用与否,出于对开发者(尤其是国产)的不信任,给 fake permission 是很正常的事
    drymonfidelia
        22
    drymonfidelia  
       142 天前   ❤️ 2
    @cwxiaos 重视隐私的人不会 root ,root 要解 bl 锁,解锁后攻击面大了非常多
    Greatshu
        23
    Greatshu  
       142 天前   ❤️ 1
    如果是 root 专属 bug ,那就修个屁,root 用户直接提醒环境异常封号,第一次 1 天,第 2 次一周,第 3 次永久,如果你没法封号就忍着。
    我最近想明白一件事,app 和用户是双向选择的关系,你选择你的用户,用户选择你。如果你的用户是喜欢折腾的注重隐私的 XX ,吝啬挑剔毛病多爱投诉,喜欢网上带节奏,不信任开发者但还是用他写的 app ,那我只能说自求多福吧。
    ztmzzz
        24
    ztmzzz  
       142 天前 via iPhone
    @drymonfidelia 重视隐私的人如果用国产 app 肯定得 root 啊,不然怎么限制
    bkmi
        25
    bkmi  
       142 天前 via Android   ❤️ 3
    @drymonfidelia 鬼才罗辑,滥用权限收集用户隐私的应用比比皆是,你能举一例因为解锁 bl 后,攻击面大了而导致隐私泄露的案例吗?
    drymonfidelia
        26
    drymonfidelia  
       141 天前   ❤️ 1
    @bkmi 不说别的,你刷过 magisk 吧,解锁 bl 后任何能物理接触你手机的人都可以非常轻松地免密码在你的 boot.img 里刷入以 root 权限执行的恶意代码,在系统层面完全检测不到
    XiLingHost
        27
    XiLingHost  
       141 天前
    检测 root ,然后把日志上报关了或者打到单独的日志系统里
    ysc3839
        28
    ysc3839  
       141 天前 via Android
    @drymonfidelia 用户完全可以用 Apple 设备存储重要的隐私数据,然后用 Android/Windows 使用一些迫不得已要用的垃圾国产软件,同时对这些国产软件进行限制,并且不在此设备中存储重要的隐私数据。
    kx5d62Jn1J9MjoXP
        29
    kx5d62Jn1J9MjoXP  
       141 天前 via Android
    说到底还是读写文件没做好 exception 处理
    jeesk
        30
    jeesk  
    OP
       141 天前
    @Greatshu 我不可能专门去写这种逻辑, 我只想屏蔽这部分人的日志。
    我去看每条崩溃日志是有成本的。 我只想针对这种文件异常或者其他异常的情况下屏蔽这种用户的日志。 不要以为开发者天天闲得慌。
    jeesk
        31
    jeesk  
    OP
       141 天前
    @ssynhtn 确实是这样, 但是如果每个文件读写都去检测, 那无疑会增加自己的成本。 那么按照 android 的标准开发规范, 反而不能处理这种 exception 。 是不是太讽刺了?
    NSAgold
        32
    NSAgold  
       141 天前 via Android   ❤️ 2
    7#说的部分对,说明要的 permission 很可能是不该要的
    以文件为例,私有目录不需要 permission ,(没记错的话好像是 a11 之后)往 download 等公共文件夹存也不需要,不行走 SAF 也能存。请求之后非要建个/storage/emulated/0/xxapp/文件夹存数据,在用户根目录里乱拉屎的行为就属于滥用。
    很可能是这些不规范的做法让 root 用户给了你 fake permission
    bkmi
        33
    bkmi  
       141 天前 via Android
    @drymonfidelia 你所认为的隐私看起来跟我理解的不是一个东西。
    我认为的隐私:我设备唯一标识,设备上安装的应用列表,应用使用频率,使用记录,设备上文件,地理位置,通讯录,聊天记录,而这些隐私普通应用不需要 root 权限就能获取。
    不知道你重视隐私的人不会 root 这个结论是从何得出。你举的例子都物理接触了,都可以手抄你的通讯录,聊天记录了,这种情况真少之又少。
    efcndi
        34
    efcndi  
       141 天前   ❤️ 1
    哎哟哟,哎哟哟,妄议不得,得罪了,得罪了。下次一定大力鼓掌。
    drymonfidelia
        35
    drymonfidelia  
       141 天前
    @bkmi 手抄你的通讯录,聊天记录 必须要在知道我的手机锁屏密码的情况下进行,解锁 BL 后刷 boot.img 不需要密码
    drymonfidelia
        36
    drymonfidelia  
       141 天前
    @bkmi 设备唯一标识,设备上安装的应用列表,应用使用频率,使用记录,设备上文件,地理位置,通讯录,聊天记录 这其中的大部分信息不需要 root 就可以限制。如果你要说用 0day 绕过,root 后会带来更多 0day
    kenvix
        37
    kenvix  
       141 天前
    程序健壮性做得烂楼上已经批判过了,就算是屎山没法改进健壮性吧,改进一下遥测还是很容易的吧?
    jeesk
        38
    jeesk  
    OP
       141 天前
    @NSAgold
    请求之后非要建个/storage/emulated/0/xxapp/文件夹存数据,在用户根目录里乱拉屎的行为就属于滥用。

    什么叫做非要乱拉屎? 你见过 app 拉屎了?
    还是说所有在公共目录创建文件的都是在拉屎? 那你既然给了权限, 那不就代表应用可以在根目录创建文件? 那创建文件万一是回收站,或者配置文件呢?

    要喷也要找到点子嘛, 真是一碰到权限, 就要喷开发者滥用权限。 开发者就这么贱吗?
    jeesk
        39
    jeesk  
    OP
       141 天前
    @kenvix 只能这样了。 暂时考虑 root 的情况下, 不会记录和发送任何崩溃日志。
    ztmzzz
        40
    ztmzzz  
       141 天前 via iPhone
    @drymonfidelia 可以回锁 bl
    krixaar
        41
    krixaar  
       141 天前
    root 用户的报错日志怎么会在你那里?讲道理这年头想 root 一下这么麻烦,除非你的 app 必须 root 使用(那就不存在楼里这个问题),否则愿意折腾 root 的估计都不会勾用户体验改善计划的吧?
    Ruikoto
        42
    Ruikoto  
       141 天前
    @NSAgold 正确的,十分反感建个/storage/emulated/0/xxapp/文件夹的拉屎行为,我不理解有什么 SAF+私有目录解决不了的场景会需要 op 一定要拿到存储权限才能实现
    jeesk
        43
    jeesk  
    OP
       141 天前
    补充一下, 此帖已经终结。
    有些人不能理解为什么 saf 不能解决某些问题, 那是你的无知, 请不要炫耀你的无知。 无效沟通太多, 那么只好 block 了。
    NSAgold
        44
    NSAgold  
       141 天前 via Android
    @jeesk 回收站/配置文件应该在你的私有目录实现,乱建文件夹就是违反标准设计的滥用权限。
    存储重定向就是治这种恶心应用的
    jeesk
        45
    jeesk  
    OP
       141 天前
    @NSAgold 你不懂就不要乱说了
    NSAgold
        46
    NSAgold  
       141 天前 via Android
    @jeesk #45 还在嘴硬 自己设计有问题却还在指责别人“不懂” 你最懂,想必是不会被 root 用户塞 fake permission 了吧? app 名字贴出来帮你反向宣传一波
    https://sr.rikka.app/zh-hans/guide/#什么是应用滥用存储空间的问题
    jeesk
        47
    jeesk  
    OP
       141 天前
    @NSAgold 你用过该应用吗? 不懂就不要瞎说, 总以为自己高高在上一样, 发帖的目的的是为了解决问题, 不是为了让你偏离话题。 总以为自己是最牛逼的,最懂设计的? 一幅高高在上的样子, 还发个链接来证明自己说的是对的? 理想开发和实际开发是 2 回事, 如果你真的干过开发, 就不会说出这么离谱的事。 最可怕的不是能力不行, 是自以为自己比别人还懂, 拿着规范当令牌的。
    jeesk
        48
    jeesk  
    OP
       141 天前
    @NSAgold 安卓在用户授予权限的情况下, 允许应用程序放置内容到公共目录, 在授权权限的时候必须显示提醒用户。 并且用户有拒绝的权力。 到了你这里就变成了, 不允许任何应用程序在公共目录读写文件, 只要一读写就是拉屎。 你这逻辑到哪儿都说不通。况且应用又不是要求一定要授予该权限才能运行,如果一定要求授予该权限才能使用,才是你该喷的。 所以说到底是谁嘴硬?
    jeesk
        49
    jeesk  
    OP
       141 天前
    @NSAgold 想必是不会被 root 用户塞 fake permission 了吧? 你的每一步都在猜测开发者不怀好意。

    有没有想过有一种可能, 开发者尽自己的努力去维护应用,而使用者也可能不清楚一些 fake permission 会导致开发者出现一些困扰? 使用者也没有想到会给开发者造成一些困扰, 毕竟他们不知道整个链路? 不是每个 root 用户都是开发人士。

    然后在你的心理下就埋下一颗种子, 凡是 App 就不能在公共目录读写,在公共目录读写都是拉屎。 你的想法还强加给别人, 还吐槽别人乱设计。


    你应该吐槽的是那些,不给外置目录就不让运行的应用。 而不是在自己一无所知的情况下, 就随便揣测开发者都是恶心的, 都是不遵守规范的,在公共目录拉屎。 然后自己以为自己站在了道德高地上, 到底是谁不懂? 天肯定知道。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2788 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.