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

未 root 的设备,究竟该怎么彻底禁用 app 获取位置?

  •  
  •   moonkiller · 2016-10-13 17:34:22 +08:00 · 4316 次点击
    这是一个创建于 2130 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在的国产 App 真是一个个流氓得要死,都关闭 GPS 定位了
    还要通过通过各种手段获取你的位置信息,求彻底关闭或伪造的方案
    19 条回复    2016-10-14 13:47:13 +08:00
    sigroma
        1
    sigroma  
       2016-10-13 17:55:00 +08:00
    gps 太慢了,实际上各个地图应用都是用的 wifi 信号和 gps 共同工作来定位
    只要你给了网络权限,基本就没啥办法吧
    bertonzh
        2
    bertonzh  
       2016-10-13 17:57:42 +08:00
    用代理
    shlabc
        3
    shlabc  
       2016-10-13 17:58:54 +08:00
    换个思路,买 2 台手机。 1 台 ip6+,只装 10+必备应用。另一台买个能 root 性能又足够的。
    honeycomb
        4
    honeycomb  
       2016-10-13 18:11:03 +08:00 via Android
    在标准的 Android 设备上,只要:

    关闭定位权限且使用 app 时不要连入无线局域网即可。

    如此 app 拿不到除了本地 IP 以外的一切和定位有强关联的信息。

    如果连 IP 也不能要的话,只能是 iOS 那样彻底断网了。
    qceytzn
        5
    qceytzn  
       2016-10-13 18:52:28 +08:00
    @honeycomb 那么“在标准的 Android 设备上,关闭定位权限且使用 app 时通过手机上的 SS 或者 VPN 连接 wifi 的情况下” app 还能获取到真实的定位信息吗?

    另外就是即使走手机流量的,也能定位到最近的基站吧?最远不过 2 公里吧?
    helloccav
        6
    helloccav  
       2016-10-13 19:11:57 +08:00
    装 xposed 框架,再装 XPrivacy 伪造位置, 这不算 root 吧?
    zyxc
        7
    zyxc  
       2016-10-13 19:24:25 +08:00   ❤️ 3
    @helloccav 兄弟 你告诉我装 xposed 框架不用 root 吗?
    JohnChu
        8
    JohnChu  
       2016-10-13 19:34:56 +08:00 via Android
    我对于隐私也比较注重,你可以看我发的帖子。今天发现了一个应用,叫 Apk permission remover 。应该能满足你的需求
    app 定位貌似有两种,一种是 GPS ,一种是通过 WiFi 和基站模糊定位,两种权限都可以用这个软件禁止。
    JohnChu
        9
    JohnChu  
       2016-10-13 19:35:30 +08:00 via Android
    @zyxc 不一定要 root ,有些用 recovery 刷入就行了
    honeycomb
        10
    honeycomb  
       2016-10-13 19:58:43 +08:00 via Android
    @qceytzn

    我认为这种情况下应当获取不到和位置有关联的信息,但我不知道在挂上 VPN 后,从 networkmanager 的 API 读取到的本地 IP 地址是基站分配的还是 VPN 的。

    当然要排除掉系统存在另一个能获得定位数据的 app x ,然后那个 x 又开放了一个接口,且当前应用去调用 x 。如果是这样的情况,它不受权限机制限制。早两年 Google play service 出过类似的 bug 。


    关闭定位权限后,无法获得基站信息(相关的函数需要有定位权限,否则 appops 是不让它调用(抛出 SecurityException )或返回 null/空值的,具体根据系统版本与应用的 targetAPI level 有关。
    honeycomb
        11
    honeycomb  
       2016-10-13 20:01:59 +08:00 via Android
    @zyxc 在 nexus 这样的手机上,装 xposed 还真不用 root 手机:

    art 的部分是从 recovery 安装的,而为了使用自定义 recovery ,只要解锁 bootloader 就可以了
    xposed companion app 本身无论是安装还是运行都不需要 root 权限

    所以不需要 root

    @JohnChu 这个问题用 appops/运行时权限机制就能解决了,不需要那么麻烦且要付出重新打包这样代价的方法。 appops 从 4.3 开始就有了。
    JohnChu
        12
    JohnChu  
       2016-10-13 21:03:03 +08:00 via Android
    @honeycomb 我觉得你讲的是系统内建的权限管理,那个并不能满足我的需求,我希望能够控制应用程序读取 IMEI 等信息。
    honeycomb
        13
    honeycomb  
       2016-10-13 21:14:37 +08:00 via Android
    @JohnChu

    Android6.0 开始有一个电话权限(运行时权限),在不允许电话权限的时候就不能读 IMEI ,遇到微信这样用耍流氓(看到没有这个权限就不肯运行)的,就进一步用 appops ,把微信的 OP_READ_PHONE_STATE 置为 ignore ,同时允许电话权限,这样微信读不到 IMEI 且耍不了流氓。

    如果在更早的系统上阻止获取 IMEI ,确实需要第三方软件的帮助了。

    这样符合你的需求吗?
    realpg
        14
    realpg  
       2016-10-13 22:23:52 +08:00
    @JohnChu 非移动数据接入的话,非铁通长宽非法 NAT 的宽带, IP 定位就足够了……
    GhostFlying
        15
    GhostFlying  
       2016-10-13 22:34:28 +08:00
    JohnChu
        16
    JohnChu  
       2016-10-14 08:39:37 +08:00 via Android
    @honeycomb 我使用的是三星的系统, android 版本 6.0 ,系统自带的权限管理中没有出现如 OP_READ_PHONE_STATE 这样细化的管理,请问 appops 怎么实现?谢谢
    honeycomb
        17
    honeycomb  
       2016-10-14 08:58:48 +08:00 via Android
    @JohnChu 5.1 以上的版本在未加改动前,只有 adb shell 的 appops 命令能更改每个应用的 appops 配置
    JohnChu
        18
    JohnChu  
       2016-10-14 11:53:56 +08:00
    @honeycomb 我 ignore 了如下权限:
    OP_READ_PHONE_STATE
    READ_SMS
    RECEIVE_SMS
    CALL_PHONE
    GET_ACCOUNTS
    是不是我的 IMEI 不会被读取到了?(尽管禁得有点多)
    honeycomb
        19
    honeycomb  
       2016-10-14 13:47:13 +08:00 via Android
    @JohnChu 阻止获取 IMEI 只需要 ignore 掉 OP_READ_PHONE_STATE 就足够了,你列出的剩下四个和 IMEI 无关,是涉及其它操作的 op 。

    如果想弄明白上述说明的具体流程,可以这么做:

    1 ,在 Android 文档里找到获得 IMEI/meid 的函数,也就是 TelephonyManager.getDeviceId()

    2 ,到 Android 源代码里找到这个函数,看它是如何触发 appops 检查的
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2436 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:07 · PVG 21:07 · LAX 06:07 · JFK 09:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.