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

「Go 谷歌安装器」的原理是啥

  •  
  •   liyafe1997 · 2022-12-19 09:57:09 +08:00 via Android · 9278 次点击
    这是一个创建于 465 天前的主题,其中的信息可能已经有所发展或是发生改变。

    闲来无视折腾了下一台吃灰的血脉机 红米 5Plus ,给它刷回了官网的 MIUI ,最后一版官方包是基于 Android 8.1 的 MIUI11 ,并且没有自带 GMS ( MIUI 应用商店搜 Google Play 搜不到,如果自带有 GMS 的国行 MIUI 是可以搜到的,并且在应用管理里面确认了没有 com.google.android.gsf (服务框架), com.google.android.gms ( Play 服务), com.android.vending(Play 商店)这三件套。

    突然想起酷安有个 Go 谷歌安装器,这东西印象好多年前也玩过,印象在彻底没有 Google 框架的机子上就算装了也是用不了的(因为不在 system 分区,只有普通 App 的权限)。只有一种情况能用就是国行机其实自带有 Google 框架,至少带有那个 gms 还有 gsf ,然后默认是禁用状态(后台压死),没有装商店,这时其实装个 Play 商店 App 就能用了,在 MIUI 的应用商店也能搜到 Google Play 商店这个 App 。(比如我的主力机 K30Pro 就是这种情况)

    有意思的事情来了,这个红米 5Plus 开了那个谷歌安装器后确实没检测到这三件套,然后依次自动下载安装了这三个 Apk ,神奇的事情来了,装好之后居然能用!!能登录 Google 帐号,商店能下 App 。唯一「露馅」的地方就是,第一次启动时「 Google Play 服务(也就是 com.google.android.gms )」会请求定位权限(它不是一个系统 App ,只是一个普通 App ,能卸载的)。

    一切都能正常使用,包括 Google Map 能定位(能启用 Google 位置信息服务),Gmail 也能用,等等,除了「 Play 服务未通过认证」(这个在预料之中)

    最神奇的是,这个 gms 居然能把自己注册成为设备管理员(那个查找我的设备服务)。而且 Play 服务和 Play 商店这俩个 App 都能自更新,没有弹出那个应用包安装器,就是跟原版一样,后台自更新。

    所以这到底是什么魔法能让这几个「通过 apk 安装的普通 App (非 system 分区里的)」能有这么大的权限:安装 /更新其它 App ,注册设备管理员,等等。

    并且也试了,这三个 App 确实能直接卸载,卸得一干二净(如果是 system App ,只能「卸载更新」)

    而且能绕过 MIUI 的自启动控制和后台清理,跟微信一样,哪怕没打开自启动,其它 Google App 一样能把 gms 拉起来,并且清后台不会被清掉。

    我猜,有这么几种可能:1. Android 系统( AOSP )自带的这个后门,比如遇到特定签名的 App 给开放 system 权限(哪怕是通过 apk 安装的) 2. MIUI 给开的后门。

    不知道这个安装器在其它品牌的手机表现如何,以及不知道这个安装器的三件套是不是特制的(甚至可能是 Google 官方特制,所以拥有 Google 正版签名)

    20 条回复    2022-12-20 09:22:27 +08:00
    seers
        1
    seers  
       2022-12-19 10:02:09 +08:00 via Android
    私有 API ?
    jeesk
        2
    jeesk  
       2022-12-19 10:24:24 +08:00
    反射可以使用很多骚炒作,不奇怪。
    jeesk
        3
    jeesk  
       2022-12-19 10:25:54 +08:00
    google play 里面有个软件叫做 device info ,看了才知道 android 多么的不靠谱。
    sheldor
        4
    sheldor  
       2022-12-19 10:27:34 +08:00
    你难道没有想过作为用户自主安装的 play 商店,play 商店为什么可以不经提示直接安装其他 app ?
    ysc3839
        5
    ysc3839  
       2022-12-19 10:27:38 +08:00 via Android
    MIUI 以前的版本给 GMS 开了后门,即使安装为用户应用也能调用一些系统应用才能使用的 API
    oix
        6
    oix  
       2022-12-19 10:57:20 +08:00 via Android
    @jeesk 怎么不靠谱了?
    jeesk
        7
    jeesk  
       2022-12-19 11:07:21 +08:00   ❤️ 1
    @oix 通过反射可以 hook 很多 api 出来,miui 无法拦截这些调用。
    MLawliet
        8
    MLawliet  
       2022-12-19 11:12:34 +08:00   ❤️ 1
    也一直想弄清这个问题,不过一直没弄清

    应该可以排除私有 api 和反射这些类似利用安全漏洞的方式,如果存在这些安全漏洞,普通 app 可以轻易利用,那在国内这些 app 上早就利用烂了

    比较可能的原因是国内的系统为 google 留了后门,因为通过包名和签名,已经可以判断就是 google 官方商店了,就允许它不提醒用户就安装应用,当然系统想禁止也很容易
    preach
        9
    preach  
       2022-12-19 15:46:23 +08:00
    @jeesk 展开说说
    Andrue
        10
    Andrue  
       2022-12-19 16:00:52 +08:00
    默认情况下 AOSP+GMS 才是谷歌完整生态环境,国内 rom 大多阉割了 GMS 中的三大基本 app:
    google 服务框架
    google play service
    google play store
    但除了 play store 为需要手动安装的 app 外,两个服务型框架都是内置在 rom 中处于冻结停用状态的,这也是小米启用谷歌服务后安装一个 play store 就能实用的原因
    同样的 play store 作为一个 app ,其对于系统的操作权限来自于谷歌服务框架,这样预置在 system 目录中的服务框架就可以提供 root 权限

    实际上在安卓 4.1-6.0 的年代谷歌服务与系统耦合度太高,厂商又缺乏 rom 定制经验,想要用 google 系服务往往是直接刷港版系统或者解锁后从 recovery 刷升级包来补完的,而当时各家厂商的处理器规格各异,安卓版本不同,需要精确的查找对应版本后才能确保不影响手机正常使用,远没有现在傻瓜化操作舒服

    具体可以参考这个站
    https://opengapps.org/
    systemcall
        11
    systemcall  
       2022-12-19 20:41:15 +08:00
    开了后门,给对应包名+签名?的应用特权了
    你可以试试没开后门的,装上去也用不了,最多转几下圈就没了
    yukiww233
        12
    yukiww233  
       2022-12-19 20:47:31 +08:00   ❤️ 7
    和什么反射 hook api 没任何关系
    “无 root”情况下装了能用必然是官方系统内置了 google 框架的权限签名,俗称开了后门
    包括 /system/product/etc/sysconfig/google-hiddenapi-package-whitelist.xml /etc/permissions/privapp-permissions-google.xml 等等

    不用 xxx 安装器,你自己安装那 3 个 apk 也能获取同样的效果
    liyafe1997
        13
    liyafe1997  
    OP
       2022-12-19 20:50:40 +08:00
    @yukiww233 原来如此,看来就是这几个 whitelist ,不用安装到 system 分区也能有对应的权限。确实跟安装器无关,它的作用就是下载那 3 个 apk ,都是 Google 官方签名的。
    Muniesa
        14
    Muniesa  
       2022-12-19 20:53:54 +08:00 via Android
    没什么特殊的,找到对应的 apk 自己手动装也是一样的效果
    systemcall
        15
    systemcall  
       2022-12-19 21:43:41 +08:00
    @liyafe1997 #13
    安卓的权限管理有几次大改
    早期版本确实是装在 system 分区就有很高的权限,不装在 system 分区就没有
    后来,通过一些方法让 UID 一样,就有很高的权限,甚至不需要签名一样,无所谓是不是系统应用。所以有那些针对什么阿里云 OS 之类的系统的开发者调试等的开启工具。system 分区的应用反倒不见得有很高的权限。不过这个改过好几遍吧,历史也很久了
    再后来是分不同的级别,system 分区的 app 有 priv-app ,一般的 app ,vendor app 等类型。不是都有特权。好像是安卓 5.0 还是 6.0 吧,就是这个样子了。为了让一些后来安装的应用有权限,但是不至于像 4.x 那样改一下 manifest 就能提权,又做了更精细的处理
    改动了很多次。埋白名单的方法,好像是安卓 10 还是 11 就不太行了
    alafun
        16
    alafun  
       2022-12-19 21:52:57 +08:00
    安利一个功能上有相关性的软件 Gspace
    sdk234
        17
    sdk234  
       2022-12-19 22:00:12 +08:00 via Android
    @alafun 这个软件我一登录谷歌就判定我帐号被盗,然后我就必须重置密码。
    imtianx
        18
    imtianx  
       2022-12-19 22:03:15 +08:00
    gbox 好像也可以,就是偶尔链接不上,对于不能解锁的可以尝试下。
    SenLief
        19
    SenLief  
       2022-12-20 02:21:18 +08:00 via iPhone
    厂商给开了后门
    hhhsuan
        20
    hhhsuan  
       2022-12-20 09:22:27 +08:00 via Android
    @yukiww233 这是正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1627 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:52 · PVG 00:52 · LAX 09:52 · JFK 12:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.