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

2018-12-06 22:20:26 +08:00
 canrom7
目前小弟厂里有需求,给我们自己的应用需要静默安装权限,通过了解有两种方式,第一是 root、 第二就是通过系统签名在 AndroidManifest 中添加 android:sharedUserId="android.uid.system" 标签,可以获取隐藏系统 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
11550 次点击
所在节点    Android
41 条回复
Cheons
2018-12-06 23:32:59 +08:00
我所知能静默安装的只有厂商自家商店.apk ,别的自带更新都需要从商店,包括谷歌。你们家的应用何德何能?
打算自己做 ROM 嘛?还是开发个新系统?
另外能透露下那个公司嘛,我好尽量避开你们家产品 。
谢谢!
leido
2018-12-06 23:38:16 +08:00
这特么叫什么需求,扯蛋呢
winterbells
2018-12-06 23:59:30 +08:00
换领导、找厂商要签名、静默 root 改系统文件哪个简单点==

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

而你提出的方案:

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

而当你满足步骤 1 时,已经可以静默安装应用,为何舍近求远呢?
CFM880
2018-12-07 08:55:07 +08:00
有 root 权限后,pm 命令安装也是可以的
lionseun
2018-12-07 09:18:43 +08:00
可以找後門,讓系統幫你靜默安裝
canrom7
2018-12-07 09:24:16 +08:00
@CFM880
@gam2046
谢谢回复,知道 root 可行,但是后期设备是给了甲方,为了安全 root 方案就排除了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/515153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX