RootExplorer怎么样获取root权限的——续
?
這回說一下su程序和Superuser.apk是如何配合讓APK運行時具有root權限的。看這篇文章之前,先看一下這一篇:
http://blog.csdn.net/a345017062/archive/2011/05/24/6441986.aspx
?
1、APK中調用su命令
2、su檢索數據庫(/data/data/com.koushikdutta.superuser/databases/superuser.sqlite),如果找到記錄的話,說明當前進程已經被用戶允許獲取ROOT權限,則進行第4步。
3、如果沒有檢索到的話,su會通過am start命令打開Superuser.apk中的SuperuserRequestActivity:
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.");?
然后進入循環等待,每隔一秒檢索一次數據庫是否有更新,等待的時間是10秒:
for (i = 0; i < 10; i++) {sleep(1);// 0 means waiting for user input// > 0 means yes/always// < 0 means noint checkResult = checkWhitelist();... ... }?
而SuperuserRequestActivity會顯示界面要求用戶選擇是否同意進程獲取ROOT權限。用戶同意的話,就會把當前進程ID加入數據庫,并退出Activity。否則,跳到第5步。
4、su在數據庫中檢索到進程ID的話,說明當前進程已經被用戶允許獲取ROOT權限,則改變當前進程的用戶ID和組ID:
if(setgid(gid) || setuid(uid)) return permissionDenied();?
5、命令執行完畢,進程結束。
?
另外,安裝在系統中的APK每次運行時所使用的進程ID號是固定的。
?
總結
以上是生活随笔為你收集整理的RootExplorer怎么样获取root权限的——续的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [每日一题] 128. 青蛙过河(数组、
- 下一篇: java aoi 服务器地图_GitHu