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

安卓下普通 app 貌似可以随意获取已安装 app 列表

  •  
  •   clrss · 143 天前 · 5308 次点击
    这是一个创建于 143 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统: 鸿蒙 2.0 (安卓 10), 后续版本不明.

    这很危险吧. 某些软件是不是要改包名&自己打包比较好?

    话说 iOS 下普通 app 能这样吗?

    34 条回复    2022-11-23 11:18:31 +08:00
    kera0a
        1
    kera0a  
       143 天前
    iOS 也算间接可以吧
    需要开发者提前把 app scheme 列表声明好,然后就能扫描有没有安装了。
    但有点限制,列表好像不能超过 100 个,没有 url scheme 的 app 不能扫.
    paradoxs
        2
    paradoxs  
       143 天前
    iOS 的 scheme 算是个漏洞, 后面应该要被修复的。
    yuyu2140
        3
    yuyu2140  
       143 天前
    Android 11 ( API 30 )调整了软件包可见性,不要慌。
    ysc3839
        4
    ysc3839  
       143 天前
    是的。据说 Android 12 开始才有限制,但我手头上没有 AOSP 12 的设备,无法确认。MIUI 是较早就加入了“读取应用列表”权限,而且在 Android 12 中这个权限默认是允许的。
    另外,即使限制了读取应用列表,也没办法限制探测某个包名的应用。比如我想探测 com.example.app 这个应用是否安装,可以直接访问 /data/data/com.example.app ,如果已安装会返回 Permission denied ,未安装则会返回 No such file or directory 。一种解决办法是把应用安装到另一个用户下 (Android 的多用户机制,Work Profile 以及许多厂商定制系统的应用双开也是基于多用户)。
    mtdhllf
        5
    mtdhllf  
       143 天前   ❤️ 1
    @ysc3839 #4 权限默认是允许的,但是带这个权限会影响 app 上架,要有合理的需求
    yfugibr
        6
    yfugibr  
       143 天前 via Android   ❤️ 1
    11 或是 12 似乎是新加了什么限制,但是基本没用,想读照样读
    有 root 可以试试这个
    https://github.com/Dr-TSNG/Hide-My-Applist
    abc8678
        7
    abc8678  
       143 天前 via Android
    MIUI 有这个选项,但默认勾了允许。每次装软件都要麻烦一通,存储空间隔离,magisk 隐藏,应用列表的允许改为拒绝
    ysc3839
        8
    ysc3839  
       143 天前   ❤️ 1
    @ysc3839 更正一下,前面提到的探测应用的问题,我找了个 target api 是 Android 12L 的终端应用测试了一下,发现都是会返回 No such file or directory ,而另外几个 target api 低于 Android 11 的则会返回 Permission denied 。所以说这个问题是已经解决了的,只是没有针对旧应用启用。
    shawndev
        9
    shawndev  
       143 天前
    @paradoxs

    你是认真的吗?首先 iOS 工程配置 URL Scheme 有数量上限,而这个上限远不足以覆盖多数应用(考虑到某些程序不同版本有不同的 URL Scheme )。其次也不是所有应用都定义了 URL Scheme 。
    shawndev
        10
    shawndev  
       143 天前
    @paradoxs 硬要说和帖子相关的漏洞也应该是这个 https://github.com/illusionofchaos/ios-nehelper-enum-apps-0day
    mikeluckybiy
        11
    mikeluckybiy  
       143 天前
    一直都是这样的,设备 ID 和 APP 、帐号都可以关联,这也就是为什么很多时候破案比较轻松,比如登录 QQ ,我就能知道你是在哪个 ID 的设备上登录的,然后再去其它几大互联网平台查询设备 ID ,相同匹配身份信息,大数据平台会显示你的地址、身份证号、手机号等基本信息,这样破案就高效了。
    wuyiw
        13
    wuyiw  
       143 天前
    鸿蒙 3.0 (据说基于 12 )有这个权限控制了
    tromoli
        14
    tromoli  
       143 天前
    Google Play 上架的话这个权限会有影响的,需要说明用途( ps:之前项目一直都带这个权限,也没提示,前几天因为这个更新被拒了,才给去掉。。。)
    hapi
        15
    hapi  
       143 天前
    12 下也是有的,有个我有个游戏就是检测到加速器存在就运行不了
    tunggt
        16
    tunggt  
       143 天前 via Android
    实际上安卓系统。很多国产 app 不需要权限,就可以获取你电话号码,imei 等信息。
    国行手机+国内网络,你根本无处藏身。
    PolarNightUnion
        17
    PolarNightUnion  
       143 天前   ❤️ 3
    随意获取应用列表?,Play 商店有个 0 权限获取一切的软件(除了隐私信息和敏感信息),很久之前玩改机的时候拿它看过参数。https://play.google.com/store/apps/details?id=tester.app.permission.zero.zeropermissionapp
    zqlcrow
        18
    zqlcrow  
       143 天前
    @PolarNightUnion

    原来我手机上的“读取应用列表”这个权限,原来只是个安慰剂。。。。
    PolarNightUnion
        19
    PolarNightUnion  
       143 天前
    @zqlcrow 绝大多数的魔改 rom 的权限管控都是按照正常的权限使用规范进行控制的,但总是有奇奇怪怪的 api 或是骚操作可以获取这些信息,所以一般闲着没事干不要装来路不明且乱七八糟的软件。
    基本上通过 0 权限获取到的信息已经可以精准定位某台设备的特征了。
    WOLFRAZOR
        20
    WOLFRAZOR  
       143 天前
    国外的应用也是这样。应用检测到 root 就闪退(手机系统是 Android 13 ,没有安装 lsposed )。
    是这样的,“恶意”关联这个手段已经很久了。为啥好查就因为有关联(数字联盟 ID 、数美 SDK/数美设备指纹、闪验 SDK )
    4 楼提到了多用户,这个得是另外一个真正的用户才行(直接用工作资料不行,仍然会报错)
    ysc3839
        21
    ysc3839  
       143 天前
    @PolarNightUnion 在 MIUI Android 12 测试了一下,拒绝“读取应用列表”权限后仍然能读取到应用列表。该 app 的 target api 是 Android 10 ,不确定 target api 是 Android 11 时有没有这个问题。
    PolarNightUnion
        22
    PolarNightUnion  
       143 天前
    @ysc3839 不靠权限获取这些信息的,这个我当时改机的时候就测试过了,你改啥都是 hook 返回你修改的值,但这玩意是靠各种 API ,和各种骚操作实现的,有能力的大佬可以解个包研究一下。
    ysc3839
        23
    ysc3839  
       143 天前
    @WOLFRAZOR 我说的多用户只是为了防止读取到应用。实测对某个 app 开启 MIUI 的应用双开后,把主用户中该 app 卸载掉,然后用 17 楼提到的 app 读取应用列表,是读不到双开应用的。但如果把 17 楼提到的 app 双开后运行,反而能读取到主用户的应用列表。
    Damn
        24
    Damn  
       143 天前
    @PolarNightUnion 万普拉斯的 ColorOS12 闪退。。
    ysc3839
        25
    ysc3839  
       143 天前   ❤️ 1
    @PolarNightUnion 反编译看了下,就是使用 android.content.pm.PackageManager.getInstalledApplications() 读取的,不知道为什么 MIUI 的读取应用列表权限无效。
    abc8678
        26
    abc8678  
       143 天前 via Android
    @PolarNightUnion “隐藏应用列表”我是在酷安听说的,目前用来忽略更新。因为 play 商店没有这个功能
    abc8678
        27
    abc8678  
       143 天前 via Android
    @ysc3839 appops 呢?
    WebKit
        28
    WebKit  
       143 天前 via Android
    安卓这个是默认给的权限,可以在权限设置里关,好像 Android13 有限制了,默认不能访问安装列表了。
    WebKit
        29
    WebKit  
       143 天前 via Android
    其实根本不需要任何权限,直接构建相应包名的 intent 就好了,报错就是没有安装,没有报错就是安装了
    Biye9012
        30
    Biye9012  
       142 天前 via Android
    @paradoxs 何出此言
    Woodrow
        31
    Woodrow  
       142 天前
    是,emui 、MIUI 是给的,要么直接授予,要么使用 app 时授予
    ysc3839
        32
    ysc3839  
       142 天前
    @abc8678 AOSP 就没支持读取应用列表权限。
    maokabc
        33
    maokabc  
       142 天前 via Android
    谷歌 play 需要视频说明这个权限用在哪
    Joshuahui
        34
    Joshuahui  
       122 天前 via Android
    几年前的红米手机权限里有这个,原生 Android13 没有😅
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   976 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 23:06 · PVG 07:06 · LAX 16:06 · JFK 19:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.