V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Newass
V2EX  ›  Android

Android 下 root 后自己的应用如何实现修改其他应用的权限

  •  
  •   Newass · 2018-05-08 08:41:28 +08:00 · 11067 次点击
    这是一个创建于 2392 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,感觉所从下手

    之前试过修改 /data/system/packages.xml 但是只能用 adb 修改,应用好像无法修改(即使获取 root 权限) 也试过用 AppOpsManager,里面的 setMode 方法被隐藏,网上说自己导入 AppOpsManager.java 就行,但是导入后 import 的其他的包都不能找到= =也不知道咋回事儿……

    求有知道的 dalao 给条明路 OTZ

    11 条回复    2018-05-12 09:37:15 +08:00
    Newass
        1
    Newass  
    OP
       2018-05-08 09:22:34 +08:00
    怎么都没人回答呀……是不是提问方式不大对啊……新人各位 dalao 多多包涵 OTZ
    zpxshl
        2
    zpxshl  
       2018-05-08 10:07:58 +08:00 via Android
    反射获得隐藏的方法?
    alvinbone88
        3
    alvinbone88  
       2018-05-08 11:32:21 +08:00
    既然已经 root 了,就直接改 /data/system/appops.xml 来改权限
    另外 /data/system/packages.xml 在我手机上是可以用 root 权限修改的,建议顺便检查一下 root 是否完整
    tempdban
        4
    tempdban  
       2018-05-08 11:41:56 +08:00 via Android
    selinux
    Newass
        5
    Newass  
    OP
       2018-05-08 23:13:56 +08:00
    @zpxshl 试了一下子,应该是编译.class 的时候会忽略 @hide 属性的方法等,所以反射找不到方法。
    Newass
        6
    Newass  
    OP
       2018-05-08 23:18:54 +08:00
    @alvinbone88 请问修改是把修改操作写到 APP 里面,然后运行 APP 么……我这会 permission denied,但是我的应用是可以把 package.xml 修改为可读可写的,但是修改文件就是不行……
    alvinbone88
        7
    alvinbone88  
       2018-05-09 00:49:36 +08:00
    @Newass #6 这种疑难杂症,没详细的日志就只能靠猜……

    > 请问修改是把修改操作写到 APP 里面,然后运行 APP 么

    你这句话让我一脸懵逼啊
    写到 APP 的哪里? APP 里用于声明权限的文件只有 AndroidManifest.xml ,这个文件还在 APK 中,修改还需要解包

    顺便提醒一下,通过改 packages.xml 来控制权限并不是一个好办法,因为只要 APP 覆盖安装一次,与这个 APP 相关的修改就会全部丢失
    如果只是想让 APP 获取不到权限,直接改 app ops 的配置文件就可以了
    zpxshl
        8
    zpxshl  
       2018-05-09 08:20:12 +08:00 via Android
    @Newass 反射可以获得 hide 方法的吧
    Newass
        9
    Newass  
    OP
       2018-05-09 08:43:35 +08:00
    @alvinbone88 感谢大佬的解答~
    我的意思,具体点,就是自己写个 APP 修改文件的函数写到一个 Button 的点击函数里面,然后运行点击按钮,Android studio 中报 permission denied,修改的方法是 Bufferedwriter 打开 packages.xml ,这样就会直接报错,我也试了一下 appops.xml 同样的也是不行……
    获取权限用的 Runtime.getRuntime().exec("su");可以修改 packages.xml 的权限可读可写(chmod 777 packages.xml)
    手机用的红米 note,他是自带 root 管理的
    alvinbone88
        10
    alvinbone88  
       2018-05-09 09:38:27 +08:00
    @Newass #9 建议先检查一下 system 分区是否能正常读写

    据我所知,红米自带的 root 不是完整 root,最后还需要解锁 system 分区
    Trumeet
        11
    Trumeet  
       2018-05-12 09:37:15 +08:00 via Android
    用 Root 命令行调用 app_process,加载自己的 dex 来实现越权。
    至于隐藏 API,https://blog.yuuta.moe/2017/09/12/new-way-access-hidden-api/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2170 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 01:24 · PVG 09:24 · LAX 17:24 · JFK 20:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.