修改源码实现Android危险权限通过

Android Framework默认授予所有权限:彻底绕过权限弹窗的定制方案 在Android系统定制与ROM开发中,运行时权限机制是影响封闭式终端用户体验的关键环节。默认情况下应用申请危险权限会触发系统弹窗,这在政企、车载、医疗等场景下反而成为流程阻塞点。理解权限请求链路(应用调用requestPermissions→PermissionManagerService检查→PermissionController弹窗)后,可通过Framework层定制实现无感授权。DefaultPermissionGrantPolicy作为系统开机默认授权策略,为批量预授权提供了低侵入的扩展入口;结 阅读详情

#修改源码实现Android危险权限直接通过

在Android系统做6.0以后需要通过危险权限,
比如读写,录音,相机等,在都是需要动态申请才能获取到权限。

但是在系统开发中有时需要设置把危险权限设置和普通权限一样,
在AndroidManifest中申请就能通过,这就需要修改Android源代码来实现了。

网上看到几个方法,基本都不是很靠谱。

比如网上的这个方法:


如果不需要弹出此对话框来手动授予权限,而是默认授权,
可修改frameworks\base\services\core\java\com\android\server\pm\PackageManagerService.java文件下面的内容

doHandleMessage()下的case POST_INSTALL下

把final boolean grantPermissions = (args.installFlags& PackageManager.INSTALL_GRANT_RUNTIME_PERMISSIONS) != 0;

改为final boolean grantPermissions = true;即可

其实上面这个方法是可以实现的普通安装的app实现不弹出窗口就可以获取到权限。
但是对于预装的app无效,这类app还是会弹框显示危险权限的确认。
预装的app有两种:一种是adb push 到 pri-app下的
另一种是直接把代码放在package下编译出来的app。
显然上面的修改是不完全符合我们需求的,我们是要所有app都不弹出确认框。

下面做一下实现这个功能简单介绍。

修改源码的主要类是:PermissionManagerService.java

这个类是Google Android系统就有的,
它的路径在\frameworks\base\services\core\java\com\android\server\pm\permission\下

需要修改的方法名称:grantPermissions //这里grant是同意或授予的意思
这个grantPermissions方法有参数:PackageParser.Package pkg,
通过pkg可以获取到包名,当前app需要申请的所有权限等等信息。

方法里面的部分过程解析:

    // IMPORTANT: There are two types of permissions: install and runtime.(系统权限分为普通install权限和危险runtime权限)
    final int N = pkg.requestedPermissions.size();//获取AndroidManifest中请求的权限个数
    for (int i = 0; i < N; i++) { //分别对里面的每个权限进行遍历,判断
    。。。
    int grant = GRANT_DENIED; //默认权限值为拒绝
    if (bp.isNormal()) {
        grant = GRANT_INSTALL; //权限值为普通权限,会默认通过
    } else if (bp.isRuntime()) { //当权限为危险权限
        //grant = GRANT_DENIED;//系统中默认设置为危险权限
        grant = GRANT_INSTALL; //设置权限值为普通权限,会默认通过
    }

修改系统源码后,进行编译,烧录,启动的系统中,
请求危险权限就不会弹出对话框确认,直接可以获取到权限了!

本文的代码是在源码中的,只有系统开发者才能看到,普通开发者或用户是看不到的。
这里举例子的源码也是Android9.0中的源码,可能跟其他版本的源码不一样,
一般是控制权限的文件名不一样,方法名很少会改的。

其实通过系统云空间的搜索命令就可以搜到关键位置:

//搜索.java后缀的文件并且包含grantPermissions关键字的文件。
find . -name "*.java" | xargs grep  -w "grantPermissions" 

在源码中修改功能,很多时候都是靠搜索关键字来获取到关键位置的。
因为在不同版本的源码中,很多文件的位置或者命名会改变,但是方法名或关键字一般不会改变太大。

ADB修改文件权限:从Linux权限模型到安卓SELinux实战 在Linux和Android系统中,文件权限是保障系统安全与数据隔离的核心机制,它通过用户、用户组和权限位(读、写、执行)来控制资源访问。其原理基于一套精细的访问控制列表,确保应用和进程仅在授权范围内操作。掌握权限修改技术,对于移动开发、系统调试和自动化运维具有重要价值,它能直接解决应用数据管理、系统配置调试和自动化脚本执行中的权限不足问题。通过ADB工具链,开发者可以深入设备底层,执行chmod、chown等命令,实现对文件权限的精准控制。在实际应用中,这常用于**修改系统配置文件**、为**自动化脚本* 阅读详情

相关推荐

安卓11 12系统修改定制化_____修改固件 默认给指定内置应用系统级权限

通过博文了解💝💝💝 1💝💝💝-----内置应用与修改指定应用的关联 2💝💝💝------修改固件 实现给指定应用的几种操作方法 3💝💝💝-----常见修改问题以及特殊类应用操作注意

小马哥的专栏 608

修改源码实现Android危险权限直接通过

#修改源码实现Android危险权限直接通过 在Android系统做6.0以后需要通过危险权限, 比如读写,录音,相机等,在都是需要动态申请才能获取到权限。 但是在系统开发中有时需要设置把危险权限设置和普通权限一样, 在AndroidManifest中申请就能通过,这就需要修改Android源代码来实现了。 网上看到几个方法,基本都不是很靠谱。 比如网上的这个方法: 如果不需要弹出此对话框来手动...

wenzhi的博客 2198

Android应用中修改时间日期的实现与源码解析

Android 中,时间日期的管理主要通过java.time包中的类(Java 8及以上版本)以及等方法来实现。而系统级别的修改,则依赖于 Android Framework 中的类。在Android系统中,权限是操作系统用来控制应用对系统资源访问和操作的一种机制。每个Android应用都运行在独立的进程中,并且具有自己的虚拟机实例。因此,为了保证系统的安全性和稳定性,Android提供了一套权限机制来确保应用之间的隔离性。应用需要声明想要使用的权限,并且在安装时或者运行时得到用户的授权。

weixin_36299472的博客 1238

APP渗透测试-登录、权限绕过

比较万能的方法-修改响应包 这种方法对于企业内不大型的APP真的百试百灵。 响应包中包含状态码的参数,例如code=*****,success=false/true,这类参数是修改响应包的关键。 例: 首先抓需要绕过的登录包(或者其它需要绕过验证的包),以burp为例,开启抓包,抓到对应的请求包后,右键选择“Response to this request”,这个选项可以让响应包也被拦截,就可以篡改响应包。 修改参数,一般认证成功的参数都是200、true。 原理及整改 原理:修改响应包的参数来绕过,利

weixin_48350129的博客 4068

cst使用局部网格加密,手动加密,special设置等方法合理网格布局加速仿真速度

在CST中,计算复杂模型或者阵列的时候往往需要耗费大量仿真时间,除了使用更高性能的电脑或工作站进行仿真,合理对CST的仿真网格进行适当设置也是必不可少的一步。CST中网格设置影响模拟的精度和速度,因此花时间理解网格过程是很重要的。

OVEN_b612的博客 1万+

大疆mini 3 pro rtmp推流(带屏遥控器不支持)windows

大疆mini 3 pro无人机rtmp推流(带屏遥控器不支持)至windows电脑

xbsigeibwkouvfcj的博客 3430

如何实现应用系统离线授权详解方案支持(SpringBoot、SpringCloud),可以防止修改系统的方式绕过授权

如何实现应用系统离线授权详解方案支持(SpringBoot、SpringCloud),可以防止修改系统的方式绕过授权

一恍过去 3万+

把STM32MP135当单片机玩:实战SD卡脱机运行LED程序(基于MP135DK开发板)

本文详细介绍了如何在STM32MP135开发板上实现SD卡脱机运行LED程序,通过裸机开发方式(Bare Metal)利用HAL库完成GPIO控制,并解析了SD卡启动流程。内容涵盖工程创建、代码编写、SD卡烧录及常见问题排查,为开发者提供了一种高性能单片机开发方案。

weixin_33734785的博客 242

Android APP加固混淆案例分享(解决风险提示问题)

APP加固是指通过一些加固技术对apk进行加固,防止别人反编译我们的apk获取源码和资源文件,大致原理是:先将java语法翻译成c/c++代码,然后将c/c++代码编译成.so库。

yesuiyuluo78430的博客 1095

ipsec 加密流程(一):ipsec策略匹配

《openswan》专栏系列文章主要是记录openswan源码学习过程中的笔记。 Author: Toney Email: vip_13031075266@163.com Date: 2020.11.22 Copyright: 未经同意不得转载!!! Version:2.6.51.5 Reference:https://download.openswan.org/openswan/ 1. ipsec策略匹配流程(ipsec_tunnel_start_xmit) 注:open...

遇见你是我最美丽的意外 9121

数据资产可视化分析:PowerBI在大数据管理中的实战

目的:帮你搞懂“为什么数据资产需要可视化?”“PowerBI能帮企业解决什么问题?”,并掌握用PowerBI做大数据可视化的实战技巧。范围:覆盖数据资产定义、可视化分析原理、PowerBI核心功能(数据连接、建模、可视化)、零售企业实战案例,以及未来趋势与挑战。背景:为什么企业的数据像乱堆的玩具?核心概念:数据资产、可视化分析、PowerBI分别是什么?它们怎么配合?实战步骤:用PowerBI帮零售企业整理“销售玩具箱”,做出能指导决策的仪表盘;应用场景:不同部门怎么用这个“整理好的玩具箱”?

2501_92132293的博客 906

解决安卓app误报风险源码搭建教程

下载链接: https://pan.baidu.com/s/1E-fvv2iSb4Uk1TtinlbcKg 提取码: ng5b。命令:yum install java-1.8.0-openjdk.x86_64。2.安装Tomcat8.5(安装后自动安装jdk环境)后台访问地址:http://你的IP:8096/查看是否安装成功:java -version。启动命令:sh.start.sh。2.填写你的ip,端口不用修改。关闭命令:sh stop.sh。或者直接在终端输入命令安装。填写默认数据库账号和密码。

weixin_46666425的博客 545

Xilinx_JESD204B

Xilinx_JESD204B_AXI配置 说明:通过FPGA的高速数据接口JESD204B对AD9625进行高速采集。 环境:Vivado2018.3。 IP核:JESD204(7.2)。 参考手册:pg066_jesd204 v7.2。 资料以及IP_licence:JESD204B AXI协议资料:AXI 文章目录JESD204B概述JESD204B接口术语JESD204B 层JESD204B_AXI介绍AXI介绍JESD204B__AXI_Lite接口AXI-Lite接口介绍AXI-Lite接口信号

Crazzy_M的博客 1万+

Android修改源码实现APK危险权限直接通过,不弹出权限访问

我们都知道在android6.0以后,谷歌就推出了运行时权限。 对运行时权限一点都不了解的开源参考https://juejin.im/post/5a77e64a6fb9a06337570f46 我们在这里主要对APK危险权限直接通过问题进行解决。 环境:android9.0系统代码 第一种情况: 以实现的普通安装的apk实现不弹出窗口就可以获取到权限。 //在android\frameworks\...

weixin_42116930的博客 806

【Windows Server 2019】Active Directory Certificate Services 证书颁发机构的安装,配置和管理Ⅰ——AD CS的安装和配置

博文主要介绍了Windows Server 2019的证书颁发机构的安装和配置方法。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 4833

英飞凌TC3xx之一起认识GTM系列(六)如何实现GTM与VADC关联的配置

本文给出了GTM与EVADC之间关联的细节,并通过两个实例分别说明了如何对寄存器进行配置。

无所适从的我的博客 2932

Android默认开启应用权限 不弹窗

文章目录问题描述解决方法1、系统预装应用2、后安装的应用**PACKAGE_USAGE_STATS**权限**WRITE_SETTINGS权限** 问题描述 系统预装APK和后安装的APK,默认全部打开应用,不弹窗提醒!,不弹窗提醒!,不弹窗提醒!。 解决方法 1、系统预装应用 W:\Code\RK3399PRO_HDMI_ANDROID8\frameworks\base\services\core\java\com\android\server\pm\DefaultPermissionGrantPolic

Hello_World_CWB的博客 2615

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android: 动态运行时权限(危险权限)源码分析、封装、及9.0权限改动

简介: 动态运行时权限的检测流程分析:(Android 6.0开始就有了危险权限) ActivityCompat.requestPermissions() ActivityCompat.shouldShowRequestPermissionRationale() ActivityCompat.checkSelfPermission(value) Android 9.0 对于权限处理和6.0...

手写我对你的温柔 4553

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android Permission 权限总结

是时候系统的总结一遍Android权限:版本区别、权限级别、权限检测、权限申请、自定义权限等方面。权限相关源码分析详见Android权限检测申请源码流程分析。 1、权限Permission 权限是Android的一种安全机制,主要用来保护用户、应用的数据安全。 1.1、版本差异 Android权限机制有一个分水岭,就是Android 6.0 API 23,对于危险权限的申请有所不同。Android开发头疼的一点就是适配兼容,说不定以后所有的权限都要动态...

zjy764219923的专栏 9890

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android Dangerous权限的处理【设为默认】

Android Dangerous权限在源码中的处理

LeeZhenJee的博客 913

MobSF实战:Android危险权限自动化检测与安全评估指南

在移动应用安全领域,权限管理是构建系统安全沙箱的核心机制,其原理在于通过权限控制对敏感数据和关键操作的访问。理解权限,尤其是危险权限的申请与使用,对于保障用户隐私和数据安全具有至关重要的技术价值。无论是应用开发、安全评估还是合规审计,自动化静态分析工具都能高效识别权限滥用、冗余声明及潜在后门风险,广泛应用于应用上线前安全体检、第三方APK风险评估等场景。本文以广泛使用的开源移动安全框架MobSF为例,深入解析其如何通过静态分析精准定位危险权限,并结合代码上下文分析使用场景,帮助开发者与安全人员系统性地完成A

weixin_33701617的博客 360

Android权限分类和详细介绍

Android权限详细介绍

chali1314的博客 3761

Android 7.0 & 9.0 修改源码去掉动态权限 & 权限白名单设置

最近公司集成很多第三方APP,有很多的APP并没有进行动态权限申请,导致很多低版本的应用在大于6.0的系统上不能进行运行的问题,为此公司做出了让步,决定去到弹窗,只要是应用在AndroidManifest.xml进行申请的权限都可以使用. 预装的第三方app有两种:一种是adb push 到 pri-app下的 另一种是直接把代码放在package下编译出来的app。 我们是要所有app都不弹出...

小路塔的博客 4991

android 动态申请权限_Android9.0 如何实现动态权限白名单

前言此次使用Android9.0做一个动态权限白名单的功能,即客户要求他们的app默认就该应用所有的权限,在运行过程中,不需要去动态申请权限,即不弹窗。在Android M之前, Runtime permissions是直接被当作是install permissons,即在安装的时候就直接grant了。而在 Android M以后, Android加入了runtime permissions, 也...

weixin_39700063的博客 1204

Android Framework不弹窗默认授予所有权限

本文介绍了在Android系统中自动授予权限的修改方法。通过分析PermissionManagerService.java源码,重点修改了restorePermissionState函数中的权限授予逻辑,将运行时权限(Runtime Permissions)的GRANT_RUNTIME改为GRANT_INSTALL,实现安装时自动授予权限而不需要用户交互。对于普通权限、运行时权限和签名权限,统一设置为GRANT_INSTALL模式,从而避免弹窗请求权限。这种修改适用于Android 11系统,涉及frame

zmlovelx(帅得不敢出门 程序员群31843264) 1114

Android 开发中的权限申请

我们都知道,从 Android 6.0 开始,部分危险权限在 xml 注册的同时,还需要动态申请。

小旭的专栏 1万+
上一篇: 源码去掉ANR/Crash
下一篇: 7.1去掉权限申请
至鳟宝
博客等级 码龄10年 21粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值