android 反射强行设置开启系统权限

发现小米 6 安全管家,即使我关闭了某些权限,但我一打开应用后,应用自己开启了权限,遂,反编译之,得以下反射强行设置权限代码。。

理论上手动开启权限也是使用以下的代码进行,因此只有系统应用可以使用。(但不排除某些厂商定制rom的过程中,漏掉了关键的验证,调用只有有可能是可行的)

AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
HashMap<String, Integer> map = (HashMap<String, Integer>) ClazzUtils.getObjectFieldObject(appOpsManager,"sOpStrToOp");
Method method = appOpsManager.getClass().getMethod("setMode",int.class,int.class,String.class,int.class);
int code = map.get(AppOpsManager.OPSTR_GET_USAGE_STATS);
int uid = Binder.getCallingUid();
String pkn = mContext.getPackageName();
int mode = AppOpsManager.MODE_ALLOWED;
method.invoke(appOpsManager,code,uid,pkn,mode);

再附上一个反编译小米安全管家设置权限的代码:

Object mAppOpsManager = context.getSystemService("appops");
ClazzUtils.invokeObjectMethod(mAppOpsManager, "setUserRestriction", new Class[]{Integer.TYPE, Boolean.TYPE, IBinder.class}, new Object[]{Integer.valueOf(24), Boolean.valueOf(true), new Binder()});
ClazzUtils.invokeObjectMethod(mAppOpsManager, "setUserRestriction", new Class[]{Integer.TYPE, Boolean.TYPE, IBinder.class}, new Object[]{Integer.valueOf(45), Boolean.valueOf(true), new Binder()});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容