android 绕过动态权限,android绕过permission验证及fork进程权限提升
脱壳时写patch补丁时Native代码并没有太高的权限,以至于如文件IO、网络IO等基本的C函数都无法使用,提示权限不足。在网上搜索了资料大致进行以下几种尝试:
1、APK在安装时会在/data/system/packages.xml记录当前app需要申请的权限,如下:
尝试将所有权限添加到此packages.xml里没有作用,测试失败,具体原因以后再看
ActivityManagerService.java (frameworks\base\services\java\com\android\server\am)中将checkPermission、checkCallingPermission、enforceCallingPermission函数返回值修改为PERMISSION_GRANTED,修改后编译framework.jar、framework2.jar、services.jar然后刷入机器测试发现此修改容易造成系统起不来,不稳定,具体原因以后再看;
3、修改zygote fork后的进程的权限,zygote fork进程最终会调用forkAndSpecializeCommon函数,在forkAndSpecializeCommon中会判断是不是启动systemserver进程还是其它app进程,其它进程的话permittedCapabilities和effectiveCapabilities将设置成0
文件名:/dalvik/vm/native/dalvik_system_Zygote.cpp
if (isSystemServer) {
/*
* Don't use GET_ARG_LONG here for now. gcc is generating code
* that uses register d8 as a temporary, and that's coming out
* scrambled in the child process. b/3138621
*/
//permittedCapabilities = GET_ARG_LONG(args, 5);
//effectiveCapabilities = GET_ARG_LONG(args, 7);
permittedCapabilities = args[5] | (int64_t) args[6] <
effectiveCapabilities = args[7] | (int64_t) args[8] <
} else {
mountMode = args[5];
permittedCapabilities = effectiveCapabilities = 0; //其它app进程则允许权限和有将权限清o
//将上一行修改为 permittedCapabilities = effectiveCapabilities = 125910048;
StringObject* seInfoObj = (StringObject*)args[6];
if (seInfoObj) {
seInfo = dvmCreateCstrFromString(seInfoObj);
if (!seInfo) {
ALOGE("seInfo dvmCreateCstrFromString failed");
dvmAbort();
}
}
StringObject* niceNameObj = (StringObject*)args[7];
if (niceNameObj) {
niceName = dvmCreateCstrFromString(niceNameObj);
if (!niceName) {
ALOGE("niceName dvmCreateCstrFromString failed");
dvmAbort();
}
}
}
因此直接强制将app启动进程时的允许权限和有效权限全设置成固定的就可以实现权限绕过:
编译Libdvm.so拷贝到手机发现现在进程权限已经和system_server权限一样了。
android 绕过动态权限,android绕过permission验证及fork进程权限提升相关推荐
- android的动态注册,Android应用开发之BroadcastReceiver(广播)的静态注册和动态注册 --Android开发...
本文将带你了解Android应用开发之BroadcastReceiver(广播)的静态注册和动态注册 --Android开发,希望本文对大家学Android有所帮助 BroadcastReceiver ...
- android 时钟动态图标,Android 8.1 Launcher3实现动态指针时钟功能
本文主要实现功能,可能有不合理的地方 首先创建一个实现功能的工具里,直接上代码: import android.content.Context; import android.graphics.Bit ...
- Android实现动态贴纸,Android开发之仿微博贴纸效果实现——进阶篇
上个月写了一篇<Android开发之仿微博贴纸效果实现--基础篇>,文章中提到还有一篇进阶篇要写,很早就想动笔了,因中途去维护了开源库<高仿微信图片选择器2.0版本>,导致耽搁 ...
- android 设置动态头像,Android实现动态圆环的图片头像控件
先看效果图: 现在大部分的app上难免会使用到圆形头像,所以今天我给大家分享一个单独使用的,并且周围带有圆环动画的花哨圆形头像控件,本控件是在圆形头像控件基础上实现的,只是在其周围再画一些不同大小的圆 ...
- android status_bar_height动态调整,Android沉浸状态栏(StatusBar)兼容方案
所谓"沉浸状态栏"的实现需要两点: 设置状态栏为透明或者半透明状态; 整体布局可以置于状态栏下方. 1. 状态栏的配置 对于状态栏的配置有两种方式: 在manifest中配置Act ...
- android fragment动态添加,Android动态添加Fragment
效果图如下: 项目结构图如下: Fragment1: package com.demo.dongtaifragment; import android.app.Fragment; import and ...
- android textview动态设置,android – 如何动态设置文本到TextView?
我想在活动开始时显示连接的ssid和ip地址.它包含一个图像视图(用于标题,因为我没有使用操作栏)和4个文本视图(ssid标签,ssid值,ipaddr标签和ipaddr值) 我已经测试了获取ssid ...
- android popupmenu 动态添加,Android PopupMenu弹出菜单的实现
Android PopupMenu弹出菜单的实现 (1)布局文件:用于弹出菜单的处罚button: xmlns:tools="http://schemas.android.com/tools ...
- android实现动态图标,android实现动态更换应用图标
1.配置activity别名 android:enabled 属性,布尔类型,是否开启别名设置,默认值为 true: android:exported 属性,布尔类型,是否支持其他应用通过这个别名访问 ...
- android的动态tab,Android自定义view仿QQ的Tab按钮动画效果(示例代码)
话不多说 先上效果图 实现其实很简单,先用两张图 一张是背景的图,一张是笑脸的图片,笑脸的图片是白色,可能看不出来.实现思路:主要是再触摸view的时候同时移动这两个图片,但是移动的距离不一样,造成的 ...
最新文章
- PCL点云特征描述与提取(2)
- 《Pro ASP.NET MVC 3 Framework》学习笔记之十七【示例项目SportsStore】
- 轻芒王俊煜:我是如何设计信息流的?
- web安全认证机制知多少
- 多线程编程2-NSOperation
- python request 留位置4
- python手势识别隐马尔可夫模型_使用隐马尔可夫模型的运动笔迹手势识别.doc
- Delphi 与 DirectX 之 DelphiX(39): TDIB.Sharpen();
- linux串口对调,Linux串口调试详解
- Python_软件安装
- 打砖块游戏代码 c语言,打砖块游戏的源代码(请多指教)
- 首届电子商务AI算法大赛 Organized by automlai
- 诚意满满的奉上2000套Axure原型图设计源文件UI UX交互设计案例
- 作为一名优秀的程序员,如何选购适合自己的显示器
- 接口常见安全漏洞说明
- 微信在教育行业的营销
- LeetCode 热题 HOT 100 -------160. 相交链表(链表)206. 反转链表(递归、回溯)
- 【AI with ML】第 8 章 :使用 TensorFlow 创建文本
- 【原创】PHP扩展开发入门
- Microsoft Visio Professional 2013打不开也卸载不了解决办法