[玩转APP之二]Xposed对手机App进行安装卸载或升级限制
本帖最后由 陈司机 于 2021-1-12 18:06 编辑**上文:**
[玩转App之一 利用ROOT权限或Xposed随意对apk进行保资料降级](https://www.52pojie.cn/thread-1347313-1-1.html)
**本文:**
有时候应用商店或应用自身会悄咪咪地把我们的应用升级,很讨厌。
本文我们分析下如何限制APK进行卸载或安装(升级),希望大家对xp使用和系统服务有所了解,造出好玩的黑科技,嘿嘿嘿。
系统应用都是由应用大管家PMS管理的。
代码位于
frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java
举例子,核心代码如下:
#### 安装或升级管理
```kotlin
hookAllMethods("android.content.pm.PackageParser.parsePackage"){
after { m ->
try {
// 这里我们偷懒,或者提高兼容性,hook所有parsePackage, 注意这里判断一下调用链,是不是安装才解析的。
if (m.args.size == 2 && getNowStackString().contains("installPackage")) {
val parsePackageName = m.result.get<String>("packageName")
val parsePackageVersionName = m.result.get<String>("mVersionName")
// 定义一个中断应用包解析的函数,就是抛一个异常出来
fun interrupt() {
Log.w(Tag, " forbid install package $parsePackageName")
m.throwable = newObj("android.content.pm.PackageParser\$PackageParserException", 9,"Sorry, you can't install $parsePackageName") as Exception
}
// 可以进行版本判断
if (parsePackageName == "com.tencent.mm" && !listOf("7.0.19").contains(parsePackageVersionName))
interrupt()
// 禁止头条系
if (parsePackage!!.startsWith("com.ss.android"))
interrupt()
}
} catch (e: Throwable) {
Log.e(Tag, "parsePackage hook exception:\n" + e.stackTraceString)
}
}
}
```
#### 卸载管理
```kotlin
hookAllMethods("com.android.server.pm.PackageManagerService.deletePackageLIF") {
before { m ->
Log.w(Tag, " Uninstall" + getMArgsString(m))
// 卸载的时候需要调这个函数传入包名,我们直接给他置空,就会报错(注意,这个错误系统会拦截才能这样弄,否则会导致系统服务崩溃)
if (banUninstallPackage.contains(m.args)) m.args = null
}
}
```
自己测试安卓7.0-9.0有效,其它未测。
我们把插件装上,发现无论是Adb安装还是手动安装,都是安装不上的。
在进行ADB安装的时候,还能看到“Sorry, you can't install $parsePackageName”的提示。
在写系统插件的时候,有可能会把系统搞死,这时候我们的手机可能还在卡logo,不用担心,但是adb进程已经启动了,我们把电脑连接把插件直接删掉就可以了。
```
su
rm -rf /data/app/插件包名*
```
*下篇[玩转APP之三]防止App被杀,即使卸载了也不退出 研究下如何锁定app运行,可以让我们的APP安心在后台工作,喜欢的请关注留意,欢迎评论交流。*
先有我后有天 发表于 2021-1-12 20:00
弄个核心破解也可以,小米手机方法就更多了
谢谢,重在了解思路学习嘛,学会了思路,才是不变应万变。 本帖最后由 陈司机 于 2021-1-13 22:30 编辑
hfxiaozi 发表于 2021-1-13 22:23
可否帮我解答一个疑惑:如何完美的隐藏xposed(反检测)?躲避BAT的检测?
新申请了个微信新号,再次登录 ...
直接用edxposed就是裸奔,微信会反射加载进微信的Xposed类, 能够知道你hook了那个函数。
完美的隐藏xposed(反检测),这是商业机密,没人会随便给你透露的,除非你有同等筹码兑换。
wx给你的建议是用低版本 + 去xposed字符。 弄个核心破解也可以,小米手机方法就更多了 陈司机 发表于 2021-1-12 20:08
谢谢,重在了解思路学习嘛,学会了思路,才是不变应万变。
说得对 先有我后有天 发表于 2021-1-12 20:00
弄个核心破解也可以,小米手机方法就更多了
水果呢? pojiepojie52 发表于 2021-1-13 13:57
水果呢?
??什么水果 先有我后有天 发表于 2021-1-12 20:19
说得对
核心破解和小米的能详细解答一下吗 pojiepojie52 发表于 2021-1-13 13:57
水果呢?
他说苹果手机。Xposed只对安卓系统,苹果只能通过越狱安装其他app pojiepojie52 发表于 2021-1-13 13:57
水果呢?
就是因为苹果的封闭性,我才选择安卓,虽然这也让他流畅安全,但是却没了可玩性.苹果就不了解了. 先有我后有天 发表于 2021-1-12 20:00
弄个核心破解也可以,小米手机方法就更多了
请问核心破解怎么限制 APP升级呢?手机里的翼支付老是自动升级,装的SKY的ROM,最新版本用不了。。。