吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6773|回复: 21
收起左侧

[Android 原创] [玩转APP之二]Xposed对手机App进行安装卸载或升级限制

  [复制链接]
陈司机 发表于 2021-1-12 18:03
本帖最后由 陈司机 于 2021-1-12 18:06 编辑

上文:
玩转App之一 利用ROOT权限或Xposed随意对apk进行保资料降级

本文:
有时候应用商店或应用自身会悄咪咪地把我们的应用升级,很讨厌。
本文我们分析下如何限制APK进行卸载或安装(升级),希望大家对xp使用和系统服务有所了解,造出好玩的黑科技,嘿嘿嘿。
系统应用都是由应用大管家PMS管理的。
代码位于
frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java

举例子,核心代码如下:

安装或升级管理
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, "[Hook] 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)
                }
        }
}
卸载管理
hookAllMethods("com.android.server.pm.PackageManagerService.deletePackageLIF") {
        before { m ->
                Log.w(Tag, "[HOOK] Uninstall" + getMArgsString(m))
// 卸载的时候需要调这个函数传入包名,我们直接给他置空,就会报错(注意,这个错误系统会拦截才能这样弄,否则会导致系统服务崩溃)
                if (banUninstallPackage.contains(m.args[0])) m.args[0] = null
        }
}

自己测试安卓7.0-9.0有效,其它未测。
我们把插件装上,发现无论是Adb安装还是手动安装,都是安装不上的。
在进行ADB安装的时候,还能看到“Sorry, you can't install $parsePackageName”的提示。

在写系统插件的时候,有可能会把系统搞死,这时候我们的手机可能还在卡logo,不用担心,但是adb进程已经启动了,我们把电脑连接把插件直接删掉就可以了。

su
rm -rf /data/app/插件包名*

下篇  [玩转APP之三]防止App被杀,即使卸载了也不退出 研究下如何锁定app运行,可以让我们的APP安心在后台工作,喜欢的请关注留意,欢迎评论交流。




免费评分

参与人数 7威望 +1 吾爱币 +27 热心值 +7 收起 理由
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
owengolfman + 1 + 1 热心回复!
hfxiaozi + 1 + 1 可否帮我解答一个疑惑:如何完美的隐藏xposed?躲避BAT的检测?
fengbolee + 1 + 1 用心讨论,共获提升!
chinawolf2000 + 1 + 1 热心回复!
Jedis + 1 + 1 谢谢@Thanks!
RobinMaas + 2 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 陈司机 发表于 2021-1-12 20:08
先有我后有天 发表于 2021-1-12 20:00
弄个核心破解也可以,小米手机方法就更多了

谢谢,重在了解思路学习嘛,学会了思路,才是不变应万变。
 楼主| 陈司机 发表于 2021-1-13 22:27
本帖最后由 陈司机 于 2021-1-13 22:30 编辑
hfxiaozi 发表于 2021-1-13 22:23
可否帮我解答一个疑惑:如何完美的隐藏xposed(反检测)?躲避BAT的检测?
新申请了个微信新号,再次登录 ...

直接用edxposed就是裸奔,微信会反射加载进微信的Xposed类, 能够知道你hook了那个函数。
完美的隐藏xposed(反检测),这是商业机密,没人会随便给你透露的,除非你有同等筹码兑换。
wx给你的建议是用低版本 + 去xposed字符。
先有我后有天 发表于 2021-1-12 20:00
先有我后有天 发表于 2021-1-12 20:19
陈司机 发表于 2021-1-12 20:08
谢谢,重在了解思路学习嘛,学会了思路,才是不变应万变。

说得对        
pojiepojie52 发表于 2021-1-13 13:57
先有我后有天 发表于 2021-1-12 20:00
弄个核心破解也可以,小米手机方法就更多了

水果呢?
先有我后有天 发表于 2021-1-13 13:58

??什么水果
slamdunk 发表于 2021-1-13 13:59
先有我后有天 发表于 2021-1-12 20:19
说得对        

核心破解和小米的能详细解答一下吗
我从未懂过 发表于 2021-1-13 14:10

他说苹果手机。Xposed只对安卓系统,苹果只能通过越狱安装其他app
先有我后有天 发表于 2021-1-13 15:16

就是因为苹果的封闭性,我才选择安卓,虽然这也让他流畅安全,但是却没了可玩性.苹果就不了解了.
wwqkcb 发表于 2021-1-13 16:23
先有我后有天 发表于 2021-1-12 20:00
弄个核心破解也可以,小米手机方法就更多了

请问核心破解怎么限制 APP升级呢?手机里的翼支付老是自动升级,装的SKY的ROM,最新版本用不了。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:20

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表