編輯:Android開發教程
android root權限破解分析
許多機友新購來的Android機器沒有破解過Root權限,無法使用一些需要高權限的軟件,以及進行一些高權限的操作,其實破解手機Root權限是比較簡單及安全的,破解Root權限的原理就是在手機的/system/bin/或/system/xbin/目錄下放置一個可執行文件“su”,這是一個二進制文件,相當於電腦上的exe文件,僅僅在系統中置入這個“su”文件是不會給手機的軟件或硬件造成任何故障。
下面的代碼是android系統原版的su中的部分代碼,可以看出只允許getuid()為AID_ROOT和AID_SHELL的進程可以使用su進行登陸。
<span style="font-size:18px;"><strong>/* Until we have something better, only root and the shell can use su. */ myuid = getuid(); if (myuid != AID_ROOT && myuid != AID_SHELL) { fprintf(stderr,"su: uid %d not allowed to su\n", myuid); return 1; }</strong></span>
面在Superuser這個android程序中的su不再有上面的一部分,這樣任何進程都可以使用su進行登陸了,有一部分android程序要使用root權限可能的用法類似於(這個也是Superuser中的一部分代碼):
01.Process process = Runtime.getRuntime().exec("su");
02.DataOutputStream os = new DataOutputStream(process.getOutputStream());
03.os.writeBytes("mount -oremount,rw /dev/block/mtdblock3 /system\n");
04.os.writeBytes("busybox cp /data/data/com.koushikdutta.superuser/su /system/bin/su\n");
05.os.writeBytes("busybox chown 0:0 /system/bin/su\n");
06.os.writeBytes("chmod 4755 /system/bin/su\n");
07.os.writeBytes("exit\n");
08.os.flush();
而在上面提到的Superuser和android程序中的su源碼中都有這部分代碼:
if(setgid(gid) || setuid(uid)) { fprintf(stderr,"su: permission denied\n"); return 1; }
看上去這裡就是進行權限切換的地方了。面普通用戶要能使用su,su的權限要是這樣:
-rwsr-xr-x. 1 root root 34904 11月 3 2010 /bin/su
這個和電腦版的su上是一樣的。
從出上面的分析可以認為破解android的root權限的實質是:在系統中加入一個任何用戶都可能用於登陸的su命令。當然這首先要取得root權限才能做到。在z4root這個android下的破解android的root權限的程序中有一個rageagainstthecage,可能就是設法得到root權限的程序。
Compass(羅盤)是一個定制的視圖, 繼承View類, 重寫了視圖的邊界(onMeasure)和內容(onDraw);如圖:以下是Compass的具體設計:1. 創建
AndroidAnnotations是一個開源框架,旨在加快Android開發的效率。通過使用它開放出來的注解api,你幾乎可以使用在任何地方, 大大的減少了無關痛癢的代
Android Service是分為兩種:本地服務(Local Service): 同一個apk內被調用遠程服 務(Remote Service):被另一個apk調用遠程
微軟已經正式公布了Office Mobile for Android移動辦公軟件,這是繼iPhone版後又一個移動平台的辦公產品。對於Office 365的訂閱用戶來說,