吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8671|回复: 27
上一主题 下一主题
收起左侧

[Android 原创] Android P破解隐藏私有API禁止调用的限制

[复制链接]
跳转到指定楼层
楼主
破解project 发表于 2019-1-17 04:13 来自手机 回帖奖励
本帖最后由 破解project 于 2019-2-24 10:22 编辑

参考

http://weishu.me/2018/06/07/free-reflection-above-android-p/
https://juejin.im/post/5ba0f3f7e51d450e6f2e39e0

原理链接已经提供了,这里不做解释。维术的第二个条件和掘金的方法五,虽然提到了Unsafe,但是都没有给出源码。 现在我把源码发上来,算是这部分的最后一块拼图。


[Java] 纯文本查看 复制代码
    /**
     * 用Unsafe清除classloader
     * 该方法仅对同一个类生效,所以必须在需要的类中添加使用,不可以跨类调用
     *
     * @param cls 需要清除Loader的类
     */
    @SuppressWarnings({"unchecked", "JavaReflectionMemberAccess"})
    public static void clearClassLoaderInClass(Class cls) {
        try {
            //Unsafe类
            Class unsafeClass = Class.forName("sun.misc.Unsafe");
            //取Unsafe实例字段
            Field unsafeInstanceField = unsafeClass.getDeclaredField("theUnsafe");
            //放开Unsafe实例字段权限
            unsafeInstanceField.setAccessible(true);
            //取Unsafe实例
            Object unsafeInstance = unsafeInstanceField.get(null);
            //取objectFieldOffset方法取偏移量
            Method objectFieldOffset = unsafeClass.getMethod("objectFieldOffset", Field.class);
            //Class的classLoader字段
            Field classLoaderField = Class.class.getDeclaredField("classLoader");
            //使classLoader可见
            classLoaderField.setAccessible(true);
            //取putObject方法进行置空
            Method putObject = unsafeClass.getMethod("putObject", Object.class, long.class, Object.class);
            //值为8,这里不用硬编码,看什么时候等到classLoader字段被404了再用
            long offset = (long) objectFieldOffset.invoke(unsafeInstance, classLoaderField);

            Log.i(TAG, "clearClassLoaderInClass: classLoader offset=" + offset);
            //偏移量为8处置空
            putObject.invoke(unsafeInstance, cls, offset, null);
        } catch (Throwable throwable) {
            Log.e(TAG, "clearClassLoaderInClass: ", throwable);
        }
    }
用法:
[Java] 纯文本查看 复制代码
//在当前类下
public class Reflection9 {
    private static void method() {
        //传入当前类
        clearClassLoaderInClass(Reflection9.class);
        //接下来就可以调用隐私API了...
        SystemService.restart("zygote");
    }
}


和掘金说的不同,不仅仅反射,直接调用也是可以的,没有此类限制。
请求热心值和热心回复


后续
https://www.52pojie.cn/thread-877958-1-1.html

免费评分

参与人数 1吾爱币 +9 热心值 +1 收起 理由
qtfreet00 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

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

推荐
wen704 发表于 2019-1-17 09:23
本帖最后由 wen704 于 2019-1-17 09:25 编辑
mlgmxyysd 发表于 2019-1-17 08:42
weishu链接不加https无法打开,给你提pr了。

https://github.com/nijigenirubasho/AndroidPHiddenAPI52Pojie
Android P破解隐藏私有API禁止调用的限制
这个链接,楼主的连接被转义了,没做超链接
推荐
涛之雨 发表于 2019-1-17 11:42
Hmily 发表于 2019-1-17 08:15
@破解project 发帖被拦截还是上传附件被拦截?

H大。我之前发帖子的时候也是被拦截了好几次,就是文章排版好,一点发帖。360的那个网站卫士就蹦出来。说因为当前网站访问量过大。然后让我输入验证码。
输完验证码结果发现跳转到发帖前的那个目录去了。
然后检查已发帖子,发现没传上去。
后来发现是因为当时在科·学·上·网

上上次发主题时发生的后来没有过。。
不过从那以后。吾爱就是pac白名单里的网站了……

点评

你这个如果是输入验证码应该是被攻击导致的,和楼主说的这个直接发帖拦截不是一个东西。  详情 回复 发表于 2019-1-17 14:41
沙发
xzgjswb 发表于 2019-1-17 06:51
3#
Hmily 发表于 2019-1-17 08:15
@破解project 发帖被拦截还是上传附件被拦截?
头像被屏蔽
4#
jinghong 发表于 2019-1-17 08:31
提示: 作者被禁止或删除 内容自动屏蔽
5#
mlgmxyysd 发表于 2019-1-17 08:42
weishu链接不加https无法打开,给你提pr了。
6#
 楼主| 破解project 发表于 2019-1-17 08:53 |楼主
Hmily 发表于 2019-1-17 08:15
@破解project 发帖被拦截还是上传附件被拦截?

发帖(凑字数凑字数)

点评

我刚调整了下,请再试试,应该编辑发帖可以了。  详情 回复 发表于 2019-1-17 14:42
7#
 楼主| 破解project 发表于 2019-1-17 08:54 |楼主
mlgmxyysd 发表于 2019-1-17 08:42
weishu链接不加https无法打开,给你提pr了。

我这里打开没有问题
8#
mlgmxyysd 发表于 2019-1-17 09:11
加了https或挂梯子都能上,裸奔上不去。
10#
丶那年如此年少o 发表于 2019-1-17 09:35
其实楼主的链接是:
https://github.com/nijigenirubasho/AndroidPHiddenAPI52Pojie/blob/master/Android%20P破解隐藏私有API禁止调用的限制.md
这个全部都是呀,各位大佬!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 21:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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