Android P破解隐藏私有API禁止调用的限制
本帖最后由 破解project 于 2019-2-24 10:22 编辑参考
http://weishu.me/2018/06/07/free-reflection-above-android-p/
https://juejin.im/post/5ba0f3f7e51d450e6f2e39e0
原理链接已经提供了,这里不做解释。维术的第二个条件和掘金的方法五,虽然提到了Unsafe,但是都没有给出源码。 现在我把源码发上来,算是这部分的最后一块拼图。
/**
* 用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);
}
}用法://在当前类下
public class Reflection9 {
private static void method() {
//传入当前类
clearClassLoaderInClass(Reflection9.class);
//接下来就可以调用隐私API了...
SystemService.restart("zygote");
}
}
和掘金说的不同,不仅仅反射,直接调用也是可以的,没有此类限制。
请求热心值和热心回复
后续
https://www.52pojie.cn/thread-877958-1-1.html 本帖最后由 wen704 于 2019-1-17 09:25 编辑
mlgmxyysd 发表于 2019-1-17 08:42
weishu链接不加https无法打开,给你提pr了。
https://github.com/nijigenirubasho/AndroidPHiddenAPI52Pojie
Android P破解隐藏私有API禁止调用的限制
这个链接,楼主的连接被转义了,没做超链接 Hmily 发表于 2019-1-17 08:15
@破解project 发帖被拦截还是上传附件被拦截?
H大。我之前发帖子的时候也是被拦截了好几次,就是文章排版好,一点发帖。360的那个网站卫士就蹦出来。说因为当前网站访问量过大。然后让我输入验证码。
输完验证码结果发现跳转到发帖前的那个目录去了。
然后检查已发帖子,发现没传上去。
后来发现是因为当时在科·学·上·网
{:301_1004:}
上上次发主题时发生的后来没有过。。
不过从那以后。吾爱就是pac白名单里的网站了…… 首先感谢分享,然后先观摩一番, @破解project 发帖被拦截还是上传附件被拦截? weishu链接不加https无法打开,给你提pr了。 Hmily 发表于 2019-1-17 08:15
@破解project 发帖被拦截还是上传附件被拦截?
发帖(凑字数凑字数) mlgmxyysd 发表于 2019-1-17 08:42
weishu链接不加https无法打开,给你提pr了。
我这里打开没有问题 加了https或挂梯子都能上,裸奔上不去。 其实楼主的链接是:
https://github.com/nijigenirubasho/AndroidPHiddenAPI52Pojie/blob/master/Android%20P破解隐藏私有API禁止调用的限制.md
这个全部都是呀,各位大佬!{:1_925:}