supersu有源码吗?superuser源码和su.c也行啊?

SuperSU 可以卸载吗?有什么后果?-中国学网-中国IT综合门户网站
> SuperSU 可以卸载吗?有什么后果?
SuperSU 可以卸载吗?有什么后果?
转载 编辑:李强
为了帮助网友解决“SuperSU 可以卸载吗?有什么后果?”相关的问题,中国学网通过互联网对“SuperSU 可以卸载吗?有什么后果?”相关的解决方案进行了整理,用户详细问题包括:RT,我想知道:SuperSU 可以卸载吗?有什么后果?,具体解决方案如下:解决方案1:超级用户,这个是用来管理root权限的.删除的话需要root权限...这个软件不用删或者说不应该删.只要是root了的机器都有会这个软件.一般是在/system/app下.名字可能是su.apk或者superuser.apk...可以尝试用rootexplorer删除.但是不建议这么做通过对数据库的索引,我们还为您准备了:问:我删除了很多系统自带的垃圾功能,但是我又想把SuperSU卸载了,我点了卸...答:超级用户,这个是用来管理root权限的.删除的话需要root权限...这个软件不用删或者说不应该删.只要是root了的机器都有会这个软件.一般是在/system/app下.名字可能是su.apk或者superuser.apk...可以尝试用rootexplorer删除.但是不建议这么做===========================================问:从play商店重新下载supersu后再安装、它说未安装su可执行二进制文件、怎...答:没有root,所以SU无法起作用。 解决办法是ROOT,或者不用SU===========================================问:朋友一个红米手机在买来不久的时候就安装了supersu。现在手机很不稳定,...答:楼主你好您可以下载腾讯手机管家,通过数据线来连接手机和电脑,用腾讯手机管家端来管理手机上的应用,包括卸载系统软件 通过设置〉应用程序〉管理应用程序 可以直接卸载。 同时 ,可以使用腾讯手机管家的“一键体检”功能来清除垃圾文件,步骤:...===========================================问:装了supersu软件 但没破root权限 如何删除supersu图标 需要保修!答:进入手机的设置——应用程序管理,找到SuperSU点击它里面有个关闭选项,点击关闭就关闭了。你以后在手机桌面上就看不见这个软件了,想再用时再回到设置应用程序管理开启它就行。===========================================问:如题答:可以,但是你要更新掉原来的su二进制可执行文件,要知道root的关键不是在superuser上,而是再su上。比如你的root是用刷机大师破解的,你手机上装了刷机大师的授权管理,也装了360的授权管理,360授权管理是没有反应的,因为su是刷机大师的,它只...===========================================问:如题答:可以删,但是删了任意软件都可以获取权限了,很不安全===========================================问:如题答:暂不知你说的是啥。但如果是安卓手机上的superuser是root手机之后的授权管理。建议不要删除,不会没办法给软件高级权限了。删除直接卸载就可以了。===========================================问:如题答:控制面板里卸载===========================================问:求教啊,上次叫朋友帮我刷机,他给我刷了个supersu进去。现在删除不了。...答:人家想要都没,你倒好,想删掉。这一不连网,而不占多少内存。删了反而一堆问题。===========================================SuperSU是管理软件权限的软件,不建议卸载,卸载后可能不仅不会提升系统流畅性,反而会下降。 安卓是与微软的系统不同,对于系统权限的依赖程度较高,所以不建议卸载,如果...===========================================删除的话需要root权限...这个软件不用删或者说不应该删.只要是root了的机器都有会这个软件.一般是在/system/app下.名字可能是su.apk或者superuser.apk...可以尝试用rootexp...===========================================也装了360的授权管理,360授权管理是没有反应的,因为su是刷机大师的,它只听刷机大师的。要用360授权管理的话,点里面的su二进制可执行文件更新成功后,就可以把授权管理...=========================================== 没有root,所以SU无法起作用。 解决办法是ROOT,或者不用SU===========================================你是说升级还是刷机??!! 刷机:如果你的刷机包没有root的话,就不会有superuser,但如果刷机包已经带root,例如小米,就会有superuser。 升级:root过的是不可以升级官方版本,需...===========================================不删可以删除 这个是root的重要组件,进行软件授权用的。别删 影响使用 不要删,这是获取权限的钥匙,只有有它才可以删除手机系统软件 ,=========================================== supersu就是超级用户是授权用的,删除系统软件用RE管理器,获取权限后手机上应该还会出现个RE管理器,如果没有就自己下,系统软件在system的文件夹里===========================================也就是基带IMDE序列号程序,大约是20M),之后不管是刷机还是装软件后出现问题都可以恢复,你现在的版本是什么4.0.4?还是4.1.2,先安装一个对应版本的supersu试试=========================================== 不管怎么刷机都是有风险的,当然选择是你 自己做出的所以后果也是自负。 root后手机拥有更大权限,可以装一些需要 高权限的软件,也可以删除一些系统没用的 软件,更可以ap...===========================================不管怎么刷机都是有风险的,当然选择是你自己做出的所以后果也是自负。root后手机拥有更大权限,可以装一些需要高权限的软件,也可以删除一些系统没用的软件,更可以app2S...===========================================
本文欢迎转载,转载请注明:转载自中国学网: []
用户还关注
可能有帮助当前访客身份:游客 [
我有一个计划,和不多的时间
:深入浅出,赞个~!
:写的真心不错,看着容易懂而且看着也很舒服!
:口胡,最重要的问题明明是没有房
:确实是经典
:快速排序还是看不懂
:很好,收藏了
:写的好累赘
今日访问:4
昨日访问:15
本周访问:4
本月访问:256
所有访问:5925
android superuser.apk 管理root权限原理分析
发表于8个月前( 19:54)&&
阅读(175)&|&评论()
0人收藏此文章,
android superuser.apk 管理root权限原理分析,虽然有点老,但是基本的原理还是不怎么变化的
使用android 手机很多情况下需要root权限,关于root权限获取的原理可以参考以下文章:1、云中漫步博客:& Android系统root破解原理分析 & & http://my.unix-center.net/~Simon_fu/?p=10692、云中漫步 ? Android系统root破解原理分析(续) http://my.unix-center.net/~Simon_fu/?p=11003、zergRush - 随想专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/tomken_zhang/article/details/68662604、zergRush (补充) - 随想专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/tomken_zhang/article/details/68701045、结合init源码剖析android root提权漏洞(CVE-2010-E... /showthread.php?t=1397386、Android提权代码zergRush分析 | i, Claud http://blog.claudxiao.net/2011/10/zergrush.........原理是利用了android的两个提权漏洞: CVE-2010-EASY 和 ZergRush。 我把大概原理简单说说:1, CVE-2010-EASY : linux的内核的模块化程度很高,很多功能模块是需要到时候再加载,在 android中由init进程来管理这些的。但是这个init进程不会检测发给它的指令的来源,不管是内核发送的,还是用户发送的,它都执行不误,会顺从的去加载或卸载一些模块,而加载的模块都是以root身份运行的。因此你可以给它准备一个精心制作的功能模块(ko文件),然后触发相应的加载条件,比如热拔插、开关wifi等等, 该功能模块运行后,会生成 /data/local/tmp/rootshell&&& 一个带s位的shell。2,ZergRush原理: 具有root权限的vold进程使用了libsysutils.so库,该库有个函数存在栈溢出,因此可以root权限执行输入的shellcode。印象中好像还有个提权漏洞,原理大概是: 某root权限的进程在干完一些事情后会自动降权到普通权限,但是如果普通权限的进程数满了,它就降权不成功,接着它就堂而皇之的以root权限运行了,好像是adbd进程。扯了半天还没扯到superuser.apk,这个程序是root成功后,专门用来管理root权限使用的,防止被恶意程序滥用。我一直很好奇他是怎么做到这一点的,&&&&&&&&&源码地址:/svn/trunk这个源码有点老,不过感觉原理和最新的superuser应该是差不多的。带着两个问题我们来分析源码:1、superuser是怎么知道谁想用root权限?&&2、superuser是如何把用户的选择告诉su程序的那?&即superuser和su程序是如何通讯的,他们俩位于不通的时空,一个在java虚拟机中,一个在linux的真实进程中。共有两个active: SuperuserActivity 和 SuperuserRequestActivity ,呵呵比较简单。其中SuperuserActivity 主要是用来管理白名单的,就是记住哪个程序已经被允许使用root权限了,省的每次用时都问用户。SuperuserRequestActivity 就是用来询问用户目前有个程序想使用root权限,是否允许,是否一直允许,即放入白名单。这个白名单比较关键,是一个sqlite数据库文件,位置:/data/data/com.koushikdutta.superuser/databases/superuser.sqlite看完一开始我列的文章,就能明白root的本质就是往 /system/bin/ 下放一个带s位的,不检查调用者权限的su文件。普通程序可以调用该su来运行root权限的命令。superuser.apk中就自带了一个这样的su程序。一开始superuser会检测/system/bin/su是否存在,是否是老子自个放进去的su:
& & & & & & File su = new File("/system/bin/su"); &&& &&& &&& // 检测su文件是否存在,如果不存在则直接返回 &&& &&& &&& if (!su.exists())&&&&&&&
&&& &&& &&& { &&& &&& &&& &&& Toast toast = Toast.makeText(this, "Unable to find /system/bin/su.", Toast.LENGTH_LONG); &&& &&& &&& &&& toast.show(); &&& &&& &&& &&& return; &&& &&& &&& } & //检测su文件的完整性,比较大小,太省事了吧 & //如果大小一样,则认为su文件正确,直接返回了事。 & if (su.length() == suStream.available()) & & { & &suStream.close();
& &return; & // & } & & & & & &
& // 如果检测到/system/bin/su 文件存在,但是不对头,则把自带的su先写到"/data/data/com.koushikdutta.superuser/su"&&& //&&& & 再写到/system/bin/su。 & & & & & & & & & & & &byte[] bytes = new byte[suStream.available()]; & DataInputStream dis = new DataInputStream(suStream); & dis.readFully(bytes); & FileOutputStream suOutStream = new FileOutputStream("/data/data/com.koushikdutta.superuser/su"); & suOutStream.write(bytes); & suOutStream.close(); &
& Process process = Runtime.getRuntime().exec("su"); & DataOutputStream os = new DataOutputStream(process.getOutputStream()); & os.writeBytes("mount -oremount,rw /dev/block/mtdblock3 /system\n"); & os.writeBytes("busybox cp /data/data/com.koushikdutta.superuser/su /system/bin/su\n"); & os.writeBytes("busybox chown 0:0 /system/bin/su\n"); & os.writeBytes("chmod 4755 /system/bin/su\n"); & os.writeBytes("exit\n"); & os.flush();
上面提到的su肯定是动过手脚的, 我 最纳闷的就是有进程使用root权限,superuser是怎么知道的,看完su 的代码明白了,关键是句:
&sprintf(sysCmd, "am start -a android.intent.action.MAIN
& & & & & & & & & & & & & & & & -n com.koushikdutta.superuser/com.koushikdutta.superuser.SuperuserRequestActivity
& & & & & & & & & & & & & & & & --ei uid %d --ei pid %d & /dev/null", g_puid, ppid); &if (system(sysCmd)) & return executionFailure("am.");
原理是am命令,看了下am的用法,明白了:& usage: am [subcommand] [options]&&& start an Activity: am start [-D] [-W] &INTENT&&&&&&&& -D: enable debugging&&&&&&& -W: wait for launch to complete&&& start a Service: am startservice &INTENT&&&& send a broadcast Intent: am broadcast &INTENT&&&& start an Instrumentation: am instrument [flags] &COMPONENT&&&&&&&& -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)&&&&&&& -e &NAME& &VALUE&: set argument &NAME& to &VALUE&&&&&&&& -p &FILE&: write profiling data to &FILE&&&&&&&& -w: wait for instrumentation to finish before returning&&& start profiling: am profile &PROCESS& start &FILE&&&& stop profiling: am profile &PROCESS& stop&&& &INTENT& specifications include these flags:&&&&&&& [-a &ACTION&] [-d &DATA_URI&] [-t &MIME_TYPE&]&&&&&&& [-c &CATEGORY& [-c &CATEGORY&] ...]&&&&&&& [-e|--es &EXTRA_KEY& &EXTRA_STRING_VALUE& ...]&&&&&&& [--esn &EXTRA_KEY& ...]&&&&&&& [--ez &EXTRA_KEY& &EXTRA_BOOLEAN_VALUE& ...]&&&&&&& [-e|--ei &EXTRA_KEY& &EXTRA_INT_VALUE& ...]&&&&&&& [-n &COMPONENT&] [-f &FLAGS&]&&&&&&& [--grant-read-uri-permission] [--grant-write-uri-permission]&&&&&&& [--debug-log-resolution]&&&&&&& [--activity-brought-to-front] [--activity-clear-top]&&&&&&& [--activity-clear-when-task-reset] [--activity-exclude-from-recents]&&&&&&& [--activity-launched-from-history] [--activity-multiple-task]&&&&&&& [--activity-no-animation] [--activity-no-history]&&&&&&& [--activity-no-user-action] [--activity-previous-is-top]&&&&&&& [--activity-reorder-to-front] [--activity-reset-task-if-needed]&&&&&&& [--activity-single-top]&&&&&&& [--receiver-registered-only] [--receiver-replace-pending]&&&&&&& [&URI&]还有个疑点,就是su怎么知道用户是允许root权限还是反对那? 原来是上面提到的白名单起来作用,superuser把用户的选择放入& :/data/data/com.koushikdutta.superuser/databases/superuser.sqlite&&& 数据库中,然后su进程再去读该数据库来判断是否允许。
static int checkWhitelist(){ sqlite3 *db; int rc = sqlite3_open_v2(DBPATH, &db, SQLITE_OPEN_READWRITE, NULL); if (!rc) { &char *errorMessage; &char query[1024]; &sprintf(query, "select * from whitelist where _id=%d limit 1;", g_puid); &struct whitelistCallInfo callInfo; &callInfo.count = 0; &callInfo.db = db; &rc = sqlite3_exec(db, query, whitelistCallback, &callInfo, &errorMessage); &if (rc != SQLITE_OK) &{ & sqlite3_close(db); & return 0; &} &sqlite3_close(db); &return callInfo.count; } sqlite3_close(db); return 0;}
至此分析结束,回头看看,原来如此,又想起初中老师的一句话:会者不难,难者不会。&&& 其实原理都不难,只要用心。
更多开发者职位上
1)">1)">1" ng-class="{current:{{currentPage==page}}}" ng-repeat="page in pages"><li class='page' ng-if="(endIndex<li class='page next' ng-if="(currentPage
相关文章阅读}

我要回帖

更多关于 supersu superuser 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信