本帖最后由 陈司机 于 2021-1-11 16:17 编辑
前提:
A.需要先弄好adb 环境
B.手机已root
1. 先把要降级的apk push到手机
adb push c:\old.apk /sdcard/old.apk
2. 执行adb shell
adb shell
3.su 获取root 权限
su
4.查找原apk文件路径
ls /data/app
比如我要降级微信,会找到以为微信包名com.tencent.mm开头的文件夹,复制这个文件夹,
我这里是com.tencent.mm-vC_Ju-mbrC9lmkGcdtinCw==
快速查看包名工具,安利下 -> APK-info
5.强制覆盖原有apk文件
cat /sdcard/old.apk > /data/app/com.tencent.mm-vC_Ju-mbrC9lmkGcdtinCw==/base.apk
6.重启java虚拟机
killall zygote
一般到这里就成功了,如果打不开app,手动再去找到要替换的old.apk再装一下,这个时候应该不会提示不允许降级安装或安装错误之类了,把一些so,odex缓存也刷新一下
再更新一下:
使用xposed插件hook系统使随意降级,注入android进程,核心代码如下(Kotlin),也是以X信举例:
// 原方法签名:private static void checkDowngrade(PackageParser.Package before, PackageInfoLite after)
hookAllMethods("com.android.server.pm.PackageManagerService.checkDowngrade") {
before { m ->
val before = m.args[0]
val after = m.args[1]
val packageName = after.get<String>("packageName")
if (packageName == "com.tencent.mm") {
after.set<Int>("versionCode", before.get<Int>("mVersionCode")!! + 1)
}
}
}
|