关于添加 android:sharedUserId="android.uid.system"方案,有偿寻求协助 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
canrom7
V2EX    Android

关于添加 android:sharedUserId="android.uid.system"方案,有偿寻求协助

  •  
  •   canrom7 2018-12-06 22:20:26 +08:00 18868 次点击
    这是一个创建于 2500 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前小弟厂里有需求,给我们自己的应用需要静默安装权限,通过了解有两种方式,第一是 root、 第二就是通过系统签名在 AndroidManifest 中添加 android:sharedUserId="android.uid.sstem" 标签,可以获取隐藏系统 API 安装权限。
    第一中 root 方案直接被领导否掉了,只能用第二条。
    就是通过系统签名安装带有 uid.system 的应用,一开始用源码中的签名文件签名在模拟器上安装成功,并且完美实现需求。
    不料后面在手机真机上运行时却安装不上,报错提示:INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
    后来查了 android:sharedUserId 相关机制,根据这个博客 https://blog.csdn.net/jiangwei0910410003/article/details/51316688
    结论:Android 中是不允许相同的 uid 的不同签名的应用。
    鉴于我们无法拿到手机 ROM 厂商的签名,所以小弟只能另辟蹊径,新的思路就是先 ROOT 手机,然后提取手机中的 services.odex 文件反编译成 smali 之后修改校验签名的方法,然后重新打包,push 到手机里,破坏签名校验机制,然后移除 ROOT。

    但是本人一直从事应用层开发,反编译打包等只知皮毛,不能掌握,所以希望在站内找一位对这个领域熟练的朋友帮助完成;看过检验签名部分的源码,推断可行。

    文笔不行,流水账,抱歉了。
    协助完成反编译打包 push 手机中,暂定感谢费 600
    手机系统为 6.0

    VX 同 ID
    41 条回复    2018-12-27 11:26:21 +08:00
    Cheons
        1
    Cheons  
       2018-12-06 23:32:59 +08:00 via Android
    我所知能静默安装的只有厂商自家商店.apk ,别的自带更新都需要从商店,包括谷歌。你们家的应用何德何能?
    打算自己做 ROM 嘛?还是开发个新系统?
    另外能透露下那个公司嘛,我好尽量避开你们家产品 。
    谢谢!
    leido
        2
    leido  
       2018-12-06 23:38:16 +08:00 via Android
    这特么叫什么需求,扯蛋呢
    300
        3
    300  
       2018-12-06 23:59:30 +08:00 via Android
    换领导、找厂商要签名、静默 root 改系统文件哪个简单点==

    是公开的应用还是那种定制的设备上跑的?后者的话我是直接找厂商要密钥的,虽然自带 root==
    要是公开的应用,你这不相当于病毒吗==
    ysc3839
        4
    ysc3839  
       2018-12-07 00:00:06 +08:00 via Android
    没记错的话系统应用就可以静默安装,既然都可以修改 system 分区的内容了那装一个无界面的系统应用不就好了吗?
    canrom7
        5
    canrom7  
    OP
       2018-12-07 00:02:14 +08:00
    谢谢回复,不要歪了;
    然后回:厂商自家的应用商店就是用的 android:sharedUserId="android.uid.system" 方式共享 system 进程实现的静默安装。
    canrom7
        6
    canrom7  
    OP
       2018-12-07 00:03:26 +08:00
    @ysc3839 系统应用也不行,尝试过的。
    Orciorc
        7
    Orciorc  
       2018-12-07 00:03:59 +08:00 via Android
    某个版本以前,可以安装和系统程序包名相同的程序,以获取 root 权限。不过早就封掉了。现在做自动安装的,无障碍模式模拟点击居多。
    zzzmode
        8
    zzzmode  
       2018-12-07 00:05:42 +08:00 via Android
    找合作厂商签名
    iAcn
        9
    iAcn  
       2018-12-07 00:10:31 +08:00 via Android
    1. 是公开的应用还是为某个设备单独定制的?
    2. 既然已经要去 Root 了为何还要去加 uid 呢?
    3. Patch services.jar 的方式非常麻烦。需要处理 odex/vdex/cdex 的合并、国内各种 UI 的兼容性、Android 各个版本的兼容等。弄不好还会开不了机,而且就算备份了,也只能去引导用户手动恢复
    ooh
        10
    ooh  
       2018-12-07 00:12:33 +08:00
    你们老板连签名都要不来还好意思给你布置这个任务,不会是你当时把话说太满吧...
    iAcn
        11
    iAcn  
       2018-12-07 00:13:37 +08:00 via Android
    接上一条。patch jar 的方式实在不推荐。可以参考国内各大市场的做法,Root 的话就 pm install,没有的话就辅助功能(无障碍)模拟去点击那个安装的按钮。
    canrom7
        12
    canrom7  
    OP
       2018-12-07 00:13:42 +08:00
    @iAcn 是一批单独定制的设备
    canrom7
        13
    canrom7  
    OP
       2018-12-07 00:18:06 +08:00
    @iAcn 嗯嗯,无障碍的不稳定,后台容易被杀,还是属于半手动
    iAcn
        14
    iAcn  
       2018-12-07 00:19:38 +08:00 via Android
    @canrom7 那还是去要签名吧...需要扔 system 里面
    iAcn
        15
    iAcn  
       2018-12-07 00:22:31 +08:00 via Android
    @canrom7 加 android.uid.system 需要厂商签名;放在 /system/app 或 priv-app 下。手动装肯定是装不上的。
    ysc3839
        16
    ysc3839  
       2018-12-07 08:17:56 +08:00 via Android
    @canrom7 系统应用不行的话,Google Play 又是如何实现的呢?
    gam2046
        17
    gam2046  
       2018-12-07 08:38:03 +08:00   1
    android.uid.system 需要应用具有 platforms 或 system 签名。而与安装位置无关,不要求安装为系统应用。

    而你提出的方案:

    1、ROOT 设备
    2、去除签名验证
    3、反 ROOT

    而当你满足步骤 1 时,已经可以静默安装应用,为何舍近求远呢?
    CFM880
        18
    CFM880  
       2018-12-07 08:55:07 +08:00
    有 root 权限后,pm 命令安装也是可以的
    lionseun
        19
    lionseun  
       2018-12-07 09:18:43 +08:00 via Android
    可以找後,系你默安
    canrom7
        20
    canrom7  
    OP
       2018-12-07 09:24:16 +08:00
    @CFM880
    @gam2046
    谢谢回复,知道 root 可行,但是后期设备是给了甲方,为了安全 root 方案就排除了。
    liuyanjun0826
        21
    liuyanjun0826  
       2018-12-07 09:26:45 +08:00 via Android
    @canrom7 hash 懂吗?
    liuyanjun0826
        22
    liuyanjun0826  
       2018-12-07 09:27:52 +08:00 via Android
    你这直接百度就可以,发 V2EX 什么鬼
    xylophone21
        23
    xylophone21  
       2018-12-07 09:36:04 +08:00
    看起来你是希望先 root,然后出厂的时候移除 root,但仍保留自己的应用能静默安装。

    有没有想过这样每台的交付都会很麻烦。

    另外,可以尝试一下自己打包一个只能 pm install 的 su 进去,并且执行前校验来源,不想从头做的话,拿着 su 的代码去改。
    CodingPuppy
        24
    CodingPuppy  
       2018-12-07 09:47:59 +08:00 via Android
    问 rom 平台要签名吧,要不就 root。
    rumengzhenxing
        25
    rumengzhenxing  
       2018-12-07 09:49:26 +08:00
    root
    canrom7
        26
    canrom7  
    OP
       2018-12-07 09:58:46 +08:00
    @iAcn 两个目录都放了,带上 android.uid.system 重启后还是无法安装,不带 android.uid.system 重启后安装上了,但是没有静默 ins 的权限
    liuyanjun0826
        27
    liuyanjun0826  
       2018-12-07 10:00:49 +08:00 via Android
    傻逼啊,还是穷疯了,手机又不是土豆,你们在那胡说什么呢
    gam2046
        28
    gam2046  
       2018-12-07 10:04:38 +08:00
    @canrom7 正统方法,寻找 OEM 方,请求将你的应用签署 platforms 或 system 签名即可。相比较这是最不折腾的方案。具有签名后,不要求预装,即使后期用户自行安装一样具有该权限。
    LeungV2
        29
    LeungV2  
       2018-12-07 10:10:20 +08:00
    前几天客户网上下的一个 APK 也是签名相同的问题不能安装到我们的 ROM,然后拿签名文件签一下就 OK
    canrom7
        30
    canrom7  
    OP
       2018-12-07 10:14:28 +08:00
    @LeungV2 方便透露一下那个厂的吗 哥们
    canrom7
        31
    canrom7  
    OP
       2018-12-07 10:14:57 +08:00
    @gam2046 在联系,但是迟迟没有得到回复
    LeungV2
        32
    LeungV2  
       2018-12-07 10:29:57 +08:00
    @canrom7 想问啥,我们也只是低端芯片厂的小客户
    skylancer
        33
    skylancer  
       2018-12-07 15:04:23 +08:00
    @liuyanjun0826 精神 Google 产品经理开始精神分裂了嘛
    shily
        34
    shily  
       2018-12-07 17:55:05 +08:00
    首先肯定拿不到 OEM 的签名的,否则签名机制就是玩笑了。
    参考 #16 楼,应用可以申请 android.permission.INSTALL_PACKAGES 权限,但这个权限仅授予 System 应用(如果能把应用放到 /system/app 下,系统就会认为是系统应用了,android 2.x 是放到 /system/app 下,之后的版本因为不做 OEM 了,不知道放到哪个目录了),这样就可以拥有 INSTALL_PACKAGES 权限了。
    设置 android.uid.system 的目的是共享 Settings 这个应用的 UID,Settings 当然有这个权限,所以无论是否申请都具有这个权限,但是限制是,只有系统签名的应用才可以使用同一个 uid,如果不是系统签名就无法安装。
    Trumeet
        35
    Trumeet  
       2018-12-08 11:42:37 +08:00
    OEM 签名别想了,第三方想安装只能 ROOT,PM#installPackage 走起,或者 pm install 命令
    Trumeet
        36
    Trumeet  
       2018-12-08 11:42:58 +08:00
    而且都有 Root 了,改 service 干啥...
    Trumeet
        37
    Trumeet  
       2018-12-08 11:44:04 +08:00
    自己的设备,找领导要签名
    友军的设备,让他们去签 /找领导要签名
    没有签名 -> 洗洗睡
    wanjunlengfeng
        38
    wanjunlengfeng  
       2018-12-26 20:16:36 +08:00
    我已经实现了把不需要系统签名验证,直接安装带有 android:sharedUserId 的 app,不过我没有发现 app 好像不具有天然的 root 的权限.而仅仅是相同 UID 权限共享而已.
    不知道是不是这种情况?
    wanjunlengfeng
        39
    wanjunlengfeng  
       2018-12-26 20:21:07 +08:00
    实现方式 是通过 XPOSED ,busybox 实现的,你们可以自己尝试下
    canrom7
        40
    canrom7  
    OP
       2018-12-27 11:25:59 +08:00
    @wanjunlengfeng 是的 uid 用户组属于 system 的权限级别是低于 root 的,但是也可以做很多事情了,相当于 adb 的 shell 的权限了,可以直接启动黑域这类软件,不需要借助 PC 了
    canrom7
        41
    canrom7  
    OP
       2018-12-27 11:26:21 +08:00
    @wanjunlengfeng 具体的细节方便多透露一些吗? 谢谢你了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1012 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 18:41 PVG 02:41 LAX 11:41 JFK 14:41
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86