Android Root设备中的su权限获取和使用详解

Android系统的Root权限获取与检测 一、Android安全机制介绍   Android安全架构是基于Linux多用户机制的访问控制。应用程序在默认的情况下不可以执行其他应用程序,包括读或写用户的私有数据(如联系人数据或email数据),读或写另一个应用程序的文件。   一个应用程序的进程就是一个安全的沙盒。它不能干扰其它应用程序,除非显式地声明了“permissions”,以便它能够获取基本沙盒所不具备的额外的能力。它请求的这些 阅读详情

原文地址:https://www.jb51.net/article/133719.htm

ROOT权限简介:

ROOT权限是Linux内核中的最高权限,如果你的身份是ROOT,那么你就具有了ROOT权限。有了最高权限,你就可以为所欲为,换句话说,如果恶意程序获取到了ROOT权限,那么就可以肆意地破坏你的手机,获取的隐私...所以厂商一般在生产手机的时候,不会提供给用户ROOT权限,官方宣称是为了保护用户手机的安全,然后装了一堆开机自动启动,而用户这辈子也用不到也卸载不了垃圾软件(相信使用安卓的同学们都懂我的意思),而苹果所说的越狱,也就是获取ROOT权限。

为什么需要获取ROOT权限?

苹果用户获取ROOT权限,是为了可以免费安装各种软件,以及为了获取更加灵活的操作体验,苹果不会安装一堆恶心的软件;而安卓普通用户获取ROOT权限,最大的目的就是为了卸载这些恶心的自带软件,安卓极客用户则是为了各种折腾安卓手机,安卓开发人员是为了得到日志文件,分析BUG。

我们开机之后,使用手机的身份就是一个普通用户(user),如果执行su,那么就可以直接切换到ROOT身份。就像仙剑奇侠传三里面的景天,是个凡人,法力有限,但是大家都知道,他的前世是飞蓬将军,法力高强,天界无人能敌,只有魔界至尊重楼可以与他一较高下,当他们来到天庭的时候,玉帝施法,让景天直接切换成飞蓬将军,于是他就有了飞蓬将军的记忆和法力,与重楼又一次大战。su就是这样一个神奇的命令。

高通平台上,su的相关代码位于: LINUX/android/system/extras/su/su.c中

Android开发中,偶有会遇到对一些定制设备的开发,一般这种设备都会有root权限,开发中也会用到root权限去做一些操作。

比如安装操作,普通的Android手机安装apk时都会跳出安装的界面,但用到root权限时,这个可以跳过,操作如下:

?
1
2
3
Process process = Runtime.getRuntime().exec( "su" );
OutputStream out = process.getOutputStream();
out.write((( "pm install -r " + path) + "\n" ).getBytes());

这里用到Process去获取su权限,然后执行adb的安装指令。要注意的是这些操作需要再try-catch代码块下。

另外之前在网上看到过一个方法去执行命令行:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void execShell(String cmd){
   try {
     Process p=Runtime.getRuntime().exec( new String[]{ "su" , "-c" ,cmd});
     BufferedReader br= new BufferedReader( new InputStreamReader(p.getInputStream()));
     String readLine=br.readLine();
     while (readLine!= null ){
       System.out.println(readLine);
       readLine=br.readLine();
     }
     if (br!= null ){
       br.close();
     }
     p.destroy();
     p= null ;
   } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }
}

这里通过参数传入命令行,在方法体中执行。至于具体的命令行,则是需要的时候去找对应的命令就好了。


android apk 的root 权限和USB adb 权限的区别 USB adb 权限是指,当adb 连接手机时,手机中的守护进程adbd 的权限为root 权限,从而它的子进程也具有root 权限,通常如果adb shell 看到是: Android 4.0 以后版本: C:\Users\mtk71029\Desktop>adb shell root@android:/ # Android 2.3 版本: C:\Users\mtk71029\Deskto... 阅读详情

相关推荐

Android8.1-全志R311-如何打开APP获取su权限.pdf

Android6.1以后增加了Selinux,对安全性的管理更加严格了, 但是有时候客户第三方app需要执行su操作, 来获取系统的权限。 代码已验证有效。

Android 源码修改,使第三方应用可以直接使用su命令

在android原生系统中,只有root权限和shell权限下才可以使用su命令,虽然在userdebug模式下编译的系统镜像有自带的su文件,但是第三方应用却无法使用。于是在这种场景下,有两种方式可以实现第三方应用使用su命令。 1.修改原来的su相关的源码(所有的应用都可以使用) 2.通过supersu.apk 的方式进行实现(可以通过supersu进行控制应用是否可以使用su) 一、修改原来的su相关的源码 1.修改 system/extras/su/su.c ,...

shuang__zi的专栏 1万+

基于R和gephi做宏基因组与代谢组等多组学联合network相关性网络图

拿到多组学的数据后一直在找合适的方法将二者进行关联,比如我这里是三种体液的代谢组与一种体液的宏基因组。需求是对多组学进行关联分析,直到最近看到不少文章里利用Gephi将相关性表格进行可视化的图,效果还不错,于是写个过程记录自用。这里演示的是属水平的差异菌群相对丰度(宏基因组结果)与代谢组鉴定到的差异代谢物进行关联。先是计算相关性生成graphml格式文件使用Gephi软件进行可视化。

twocanis的博客 6785

Android APP执行su命令

import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; public class RootCommand { public static String runCommand(String command) { Process process =...

厚积薄发,持之以恒 7461

【紫光同创PG2L200H开发板】盘古200Pro+开发板(MES2L676-200HP)

开发板 SMA接口符合标准 SMA 接口规范,可使用”内螺旋+插针“的 SMA 线连接板卡”外螺旋+插孔”的 SMA 接口进行通信,板卡 SMA 接口与 FPGA 的 HSST 收发器的一路 RX/TX 相连,TX信号和 RX 信号都是以差分信号方式通过隔直电容连接 FPGA 和 SMA 接口, TX 发送和 RX 接收数据速率高达 6.6Gb/s。为了减轻带电插拔造成对 FPGA 芯片的损坏,在设计上在 JTAG 信号位置添加了保护二极管来保证信号的电压在 FPGA 接受的范围,避免 FPGA 的损坏。

MYMINIEYE的博客 2880

游戏开发实战:如何用旋转矩阵实现2D角色平滑转向(附Unity代码)

本文深入探讨了在Unity游戏开发中,如何运用旋转矩阵原理实现2D角色的平滑转向。文章从核心理论出发,提供了计算目标旋转、实现平滑插值(Lerp与SmoothDamp)的完整C#代码,并解决了与动画系统、物理引擎协同的常见难题,帮助开发者提升游戏操作手感与视觉流畅度。

weixin_29057237的博客 287

Android应用调用su的方法

1.首先取消su只限定ROOT,SHELL用户使用的限制 code/system/extras/su/su.c int main(int argc, char** argv) { //uid_t current_uid = getuid(); //if (current_uid != AID_ROOT && current_uid != AID_SHELL)...

hefuyou的博客 4440

【HDL系列】除法器(3)——基2 SRT算法

目录 一、除法表示 二、数字递归算法基础公式 三、QDS(Quotient Digit Selection)函数 四、基2 SRT算法 一、除法表示 除法被定义如下: 其中,x是被除数,d是除数,q是商,rem是余数。 商的精度由ulp(unit of last position)来决定: 如果ulp=1, 商q则是整数; 如果ulp=r^(-n),n是商数个数,r是所有输入操作数的基,此时商为小数。 二、数字递归算法基础公式 在使用数字递归算法(Digit Re...

纸上谈芯的专栏 8155

Android App调用su

最近在做一个项目,客户需要在应用成获取临时root权限,刚开始觉得很简单,Android就自带有su命令,只是没编译进去,想着直接编译进去就行,就一口答应客户1天搞好,各种加班悲剧就是这样开始的。   先在Android源码下找了一下,2分钟找到su源代码system/extras/su。修改了一下Android.mk,mmm编译后push到系统,(我们做系统,所以很多东西可以直接改源码),然后

张文的专栏 1万+

Kettle 连接 Oracle 数据库全流程指南

例如:C:\Oracle\product\19.0.0\dbhome_1\jdbc\lib\ojdbc8.jar 2. 替换 Kettle 驱动文件 将驱动文件复制到 Kettle 的 目录: 删除旧版本驱动:如 ojdbc14.jar 只能保留一个oracle驱动 重启 Kettle 以加载新驱动 二、配置数据库连接 1. 启动 Kettle 并新建转换 运行 (Windows)或 (Linux)。 新建转换(Transformation),添加 “表输入” 步骤,双击进入配置。 2.

qq_44724453的博客 3479

Open3d Qt的环境配置

目前统一使用qt6配置,open3d中可视化功能目前使用vtk代替,语言为c++。

阁楼 918

android无屏幕设备动态权限,Android Root设备中的su权限获取和使用详解

ROOT权限简介:ROOT权限是Linux内核中的最高权限,如果你的身份是ROOT,那么你就具有了ROOT权限。有了最高权限,你就可以为所欲为,换句话说,如果恶意程序获取到了ROOT权限,那么就可以肆意地破坏你的手机,获取的隐私...所以厂商一般在生产手机的时候,不会提供给用户ROOT权限,官方宣称是为了保护用户手机的安全,然后装了一堆开机自动启动,而用户这辈子也用不到也卸载不了垃圾软件(相信使用...

weixin_39875503的博客 585

FPGA+CUYSB3014实现USB3.0功能

CYUSB3014是赛普拉斯在近几年推出的新一代USB3.0的外设控制器,可以解决USB2.0带宽限制,或者单独开发USB协议和驱动的难题。赛普拉斯将CYUSB3014简称为EZ-USB FX3,具有高度的灵活特性,开发人员只需要下载FX3的固件库,就能使用USB3.0的功能。目前在一些电子产品中,使用主控器加PHY芯片最流行的方式是用FPGA+FX3这种搭配来实现USB3.0接口。......

D_Katter的博客 7065

android 自定义权限和root,Android Root设备中的su权限获取和使用详解

ROOT权限简介:ROOT权限是Linux内核中的最高权限,如果你的身份是ROOT,那么你就具有了ROOT权限。有了最高权限,你就可以为所欲为,换句话说,如果恶意程序获取到了ROOT权限,那么就可以肆意地破坏你的手机,获取的隐私...所以厂商一般在生产手机的时候,不会提供给用户ROOT权限,官方宣称是为了保护用户手机的安全,然后装了一堆开机自动启动,而用户这辈子也用不到也卸载不了垃圾软件(相信使用...

weixin_39695323的博客 930

YOLOv13改进策略【注意力机制篇】| ICASSP 2023 EMA 高效多尺度注意力,跨空间学习提高远距离建模依赖

ICASSP 2023 EMA 高效多尺度注意力在 YOLOv13 的接入实战:跨空间学习提升远距离依赖建模,含原理图解、完整代码、yaml 配置与实测参数量对比(ultralytics 8.3.63)。

qq_53329130的博客 930

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

迅为IMX8M Mini开发板Andaoid9 获取root 权限

迅为IMX8M Mini开发板Andaoid9 获取root 权限

Chihiro_S的专栏 3659

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android在apk中获取root权限,并执行命令

在apk中,有时候需要root权限,例如通过apk更新系统库等system的文件等,避免升级固件,或者在apk中需要直接访问某些设备等。下面是在apk中获取root权限的方法,前提是设备已经root过了。 //通过执行su产生一个具有root权限的进程 Process p = Runtime.getRuntime().exec("su"); //然后,在向这个进程的写入要执行的命令,即可达到以ro...

热爱不止,前行不息 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android应用获取root权限方法

大家都知道Android分为debug版本和release版本,二者一个重要的区别就是ro.secure属性,这个属性在根目录下default.prop中被定义,debug版本为0,release版本为1。Adb进程会读取这个属性,如果是1,就将自己设为shell用户: if (strcmp(value, "1") == 0) {             // don't run as roo

zhanghuan_xa的专栏 1278

Android获取ROOT权限

获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了。 // 获取ROOT权限 public void get_root(){ if (is_root()){ Toast.makeText(mCtx, "已经具有ROOT权...

chunzangzuo6245的博客 179

adb shell获取root权限

adb shell获取root权限 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便了,adb push一个文件就提示Permission Denied。删除system下的文件也没有权限。其实有两种方法可以获取adb shell的root权限,这两种方法的前提都是手机已经roo

xiongpeng2003的专栏 2048

android获取root权限的命令

android获取root权限的命令

学无止境 5578

Android 命令su,获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了。复制代码 代码如下:// 获取ROOT权限public void...

获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了。// 获取ROOT权限public void get_root(){if (is_root()){Toast.makeText(mCtx, "已经具有ROOT权限!", Toast.LENGTH_LONG).show();}else{try{progress_dialog = ProgressDialog....

weixin_39591386的博客 2559

android 应用获取root权限管理,Android获取ROOT权限的实例代码

获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了。复制代码 代码如下:// 获取ROOT权限public void get_root(){if (is_root()){Toast.makeText(mCtx, "已经具有ROOT权限!", Toast.LENGTH_LONG).show();}else{try{progress_dialog = Progr...

weixin_39633113的博客 550

android 动态获取root权限设置,Android获取ROOT权限的实例代码

获取Android的ROOT权限其实很简单,只要在Runtime下执行命令"su"就可以了。// 获取ROOT权限public void get_root(){if (is_root()){Toast.makeText(mCtx, "已经具有ROOT权限!", Toast.LENGTH_LONG).show();}else{try{progress_dialog = ProgressDialog....

weixin_39664994的博客 718

[免费专栏] Android安全之Root检测与Root绕过(浅析)

转移发布平台通知:将不再在优快云博客发布新文章,敬请移步知识星球... ...

橙留香Park的博客 9404

Linux上手机root,Android手机Root授权原理细节全解析

首先关于Root的方式,这里不做详解,可以有很多漏洞,比如利用uid溢出后归为0,得到Root权限,然后操作文件系统等。手机Root后,最重要的是,给手机安装了su程序和superuser apk。 su一般被安装在/system/xbin 或者 /system/bin 下面,su文件的权限如下:# ls su -lls su -l-rwsr-sr-x 1 root root...

weixin_36058866的博客 446
上一篇: Android 使用split函数进行多个空格分割
下一篇: RunTime.exec如何以root权限执行多条指令
dodod2012
博客等级 码龄15年 244粉丝 98原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值