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

这是支 fBao 绕过了通讯录权限还是另外一回事??

  •  
  •   cathedrel · 2021-06-28 08:25:14 +08:00 · 6831 次点击
    这是一个创建于 1027 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前几天发现的,当时截了图之后就在忙其他事,现在才想起来发帖询问。

    一台安卓机,出厂安卓 11 系统,用面具 root 了,上了 lsposed,xprivacylua 和 pro 都伺候起来了,然后:

    1,那天想起来要给手机充值的时候随手点了一下支 fBao 充值界面右上方的那个联系人图标:i.imgur.com/Ftnp7JR.png

    2,手机的通讯录直接冒出来了,我吓出一身冷汗:明明什么权限都没给,它怎么能调出通讯录的??:i.imgur.com/VQ0Z7uC.png

    3,系统自身的权限设置和 xpl 里的设置:i.imgur.com/CyntH1l.pngi.imgur.com/o4kBlC2.png

    4,感觉不对劲,然后我又试了一下在转账到支 fBao 界面能不能打开通讯录:i.imgur.com/yQdykMl.png

    5,结果是提示我要给它通讯录的权限:i.imgur.com/FTmd0DD.png

    我就奇怪了,充值界面的联系人和转账界面的联系人是两回事??在不给通讯录权限的情况下充值界面调出来的联系人列表点一下某个联系人支 fBao 不就拿到号码了吗?(我没点,不想让它拿到任何一位我的联系人),这是通讯录权限的漏洞吗??求解!
    32 条回复    2021-06-29 10:00:20 +08:00
    cathedrel
        1
    cathedrel  
    OP
       2021-06-28 08:27:37 +08:00
    我不想打什么支 fBao 的,为了能发出来我改了好多疑似敏感词的地方,还清各位海涵
    cherbim
        2
    cherbim  
       2021-06-28 08:34:49 +08:00
    你可能曾经给过支付宝权限,他记住了
    我的安卓 10 (上个月买的新手机),点击联系人图标,提示要通讯录权限
    dream7758522
        3
    dream7758522  
       2021-06-28 08:35:25 +08:00 via Android   ❤️ 4
    这应该是直接调出系统通讯录界面。本身没读取通讯录
    araraloren
        4
    araraloren  
       2021-06-28 08:38:45 +08:00
    感觉 3L 说的对。。 他是直接调用打开的通讯录,和读取本身没有关系
    cathedrel
        5
    cathedrel  
    OP
       2021-06-28 08:41:12 +08:00
    @cherbim 你这个推算完全不可能:系统的权限管理除了存储权限和相机权限之外没有给过任何权限,而且我 xpl 是默认所有新安装的 app 都完全限制的,那个剪切板的权限都是后来手动打开的
    murmur
        6
    murmur  
       2021-06-28 08:42:07 +08:00
    刚才测试了小米,打开通讯录也需要权限
    sutra
        7
    sutra  
       2021-06-28 08:46:53 +08:00
    我猜一个可能:支付内置的 Contacts 吧,然后数据来源可能是你曾经给过权限给它读取过,然后数据就看起来一样了。
    murmur
        8
    murmur  
       2021-06-28 08:47:56 +08:00
    但是很奇怪的是,小米的通讯录数据有权限,我设置的是询问,支付宝还是直接报需要权限,问都不问。。
    JerryCha
        9
    JerryCha  
       2021-06-28 09:01:45 +08:00
    支付宝的通讯录肯定不可能是 Material Design,所以这个界面肯定不是支付宝的
    iamthegrad
        10
    iamthegrad  
       2021-06-28 09:09:34 +08:00
    一年懵的什么是 fBao,进来才反应出来。。


    搜了一下最近支付宝这方面的新闻,真的是,哎。。。


    https://mo.fish/main/search/%E6%94%AF%E4%BB%98%E5%AE%9D
    james504
        11
    james504  
       2021-06-28 09:20:04 +08:00
    手上小米 11,MIUI12.5.8,试了你说的充值里面通讯录图标,我点击他显示的是“支付宝没有获取通讯录权限,请到[设置]中开启通讯录权限”。
    xrxsh
        12
    xrxsh  
       2021-06-28 09:25:33 +08:00   ❤️ 1
    @iamthegrad #10 这位 n l 不分的朋友,感谢承包我一早上的笑点
    iamthegrad
        13
    iamthegrad  
       2021-06-28 09:27:57 +08:00
    @xrxsh 真被你说对了,确实 n l 不分,日常打这 2 个的拼音都是 n 和 l 都打一次,然后选字,除了 n l 还有 平翘舌
    ikas
        14
    ikas  
       2021-06-28 10:16:03 +08:00
    打开系统的联系人选择页面而已
    如下即可(11):
    var action=new Intent(Intent.ACTION_PICK);
    action.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
    startActivityForResult(action, 0);
    66beta
        15
    66beta  
       2021-06-28 10:24:23 +08:00
    iphone 5S 时代,越狱后,支付宝会触发 root 权限...
    tankren
        16
    tankren  
       2021-06-28 10:24:57 +08:00
    支付宝没有获取通讯录权限,请到 [设置] 中开启通讯录权限
    aoizz
        17
    aoizz  
       2021-06-28 10:34:07 +08:00   ❤️ 2
    想要区分是 zfb 本身的通讯录还是调用了手机系统的通讯录很简单,在系统通讯录新增加一个联系人,打开 zfb 看看它现实的通讯录有没有这个新增加的联系人。
    reed2020
        18
    reed2020  
       2021-06-28 11:16:31 +08:00   ❤️ 3
    汉语拉丁化指日可待
    dingdangnao
        19
    dingdangnao  
       2021-06-28 11:47:43 +08:00
    就是直接调用系统的通讯录,你选择联系人之后 zfb 才能获取到你选择的那个联系人的手机号

    而且楼主最后一句话有点迷啊,你要用 zfb 给别人充话费 却不告诉 zfb 你要充话费的手机号??
    ruixue
        20
    ruixue  
       2021-06-28 11:48:32 +08:00
    @reed2020 这个倒不能全怪楼主,V 站没绑定手机号或注册不满 1 年,很多“敏感词”是不能直接发的,会提示账号不满足要求

    有些带敏感词的帖子甚至必须绑定手机号且注册满 1000 天才可以打开,否则直接跳转主页
    w950888
        21
    w950888  
       2021-06-28 11:53:17 +08:00
    这不是直接读取的通讯录,只是打开了通讯录 App,就跟在支付宝里可以打开淘宝一样
    Tumblr
        22
    Tumblr  
       2021-06-28 12:23:34 +08:00
    @xrxsh #12 原来是一脸懵。。。
    看得我一年懵,然后看到里这条回户才缓应过来!
    cdlnls
        23
    cdlnls  
       2021-06-28 12:29:05 +08:00
    这种千万人盯着的软件不大可能做这种绕过权限的事情,就算技术上能绕过权限控制,我觉得正常的产品经理也不会愿意让你看到它能绕过(除非产品经理是笨蛋)
    yuguorui96
        24
    yuguorui96  
       2021-06-28 13:45:08 +08:00
    支付宝打开通讯录 App 让你选择目标手机号,选择完了支付宝只能看到你选的那条记录的。

    Don't be panic.
    yuezy
        25
    yuezy  
       2021-06-28 13:52:55 +08:00
    这里只是调用了系统的通讯录,支付宝本身无权限读取数据
    someonesnone
        26
    someonesnone  
       2021-06-28 14:54:16 +08:00
    我猜是支付宝调用了系统的联系人列表接口,支付宝看不到所有的联系人,只能看到你选择好了返回的那一个联系人
    ke2933
        27
    ke2933  
       2021-06-28 17:34:17 +08:00
    抖音一直禁止访问通讯录,还能给我推,牛的一批
    dingdangnao
        28
    dingdangnao  
       2021-06-28 22:25:13 +08:00
    @ke2933 估计是访问了别人的通讯录,里面有你手机号。。。
    cathedrel
        29
    cathedrel  
    OP
       2021-06-29 01:41:08 +08:00
    @dream7758522
    @araraloren
    @JerryCha
    @ikas
    @w950888
    @yuguorui96
    @yuezy
    @someonesnone

    zfb 调出来的那个界面确实是手机系统的联系人界面,不是 zfb 自己的,但是这里又有一个问题了:我在 xpl 里面是限制了 zfb 获取“应用列表”的,依以前的使用经验来看,xpl 里面开启了这个限制之后一个 app 是无法得知 /不能调用另外一个 app 的,难道 zfb 绕过了 xpl 的这个限制??
    yuguorui96
        30
    yuguorui96  
       2021-06-29 08:05:13 +08:00   ❤️ 2
    @cathedrel Android 的权限不是像你想的那样的方式工作的,支付宝也没有想绕过权限保护。

    1. 唤醒其他 App 不需要获取应用列表的权限。

    2. App 之间通过 Intent 通信。在一个 app 需要另一个 app 提供协助时,不会像你想的那样,先查有哪些 app,再打开那个对应的 app 。而是通过 intent 通信描述自己需要完成的功能,然后具有对应功能的 app 就会响应 intent 。

    举个例子:
    Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
    startActivityForResult(intent, PICK_CONTACT);

    这段代码就会将 intent 广播到系统,并由具有“PICK_CONTACT”功能的 App 响应。

    3. 支付宝之所以需要应用列表权限是因为要反黑产,主要是用来检测 xposed,magisk,是否 root 等。
    goodryb
        31
    goodryb  
       2021-06-29 09:52:50 +08:00
    我在想 支付宝 这三个字有这么敏感吗, 大大方方的打出来有啥问题
    JerryCha
        32
    JerryCha  
       2021-06-29 10:00:20 +08:00   ❤️ 1
    @cathedrel 唤起一个 picker 不需要知道 app 知道系统有哪些应用,通过 Intent 发起请求后由系统完成应用唤起、数据回调的操作。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2660 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:12 · PVG 12:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.