標籤:https 執行 data idt raw bin 是什麼 chm 核心
參考這篇文章:https://www.zhihu.com/question/21074979
Android的核心就是Linux,所以Android擷取root其實和Linux擷取root許可權是一回事兒。
你想在Linux下擷取root許可權的時候就是執行sudo或者su,接下來系統會提示你輸入root使用者的密碼,密碼正確就獲得root許可權了。Android本身就不想讓你獲得Root許可權,大部分手機出廠的時候根本就沒有su這個程式。所以你想獲得Android的root許可權,第一步就是要把編譯好的su檔案拷貝到Android手機的/system/bin或者/system/xbin/目錄下。我們先假設你可以把su放在xbin下,接下來你可以在Android手機的adb shell或者串口下輸入su了。
Linux下su以後輸入密碼就可以root了,但Android裡的su和Linux裡的su是不一樣的,Android裡的su不是靠驗證密碼的,而是看你原來的許可權是什麼。意思就是如果你是root,那你可以通過su切換到別的使用者,比如說shell,wifi,audio什麼的。但如果你是root之外的其他使用者,就不能切換回root了,會提示你permission denied。也就說用root運行su才有用,但我這個時候還沒有root怎麼辦呢?這就涉及到另外個問題。
一般我們在Linux的console下輸入 ls -l 會列出所有檔案的許可權。
比如:-rwxr-xr-x,用過Linux的人都知道r代表該檔案可讀,w代表可寫,x代表可執行,-就代表沒有該許可權。第一個rwx代表檔案所有者的許可權,第二個rwx代表和所有者同組人的許可權,第三個rwx代表其他使用者對該檔案的許可權。但下面這個檔案就比較特殊。
rws,它的執行許可權標誌位是一個s,s代表當任何一個使用者執行該檔案的時候都擁有檔案所有者的許可權,這檔案的所有者是root,簡單點說就是不管誰執行這個檔案,他執行的時候都是以root身份執行的。
也就說即使我不是root也有可能以root身份來執行程式,那麼我就把一個所有者是root的su程式許可權標誌位置成-rwsr-xr-x,那麼不管誰執行它,都是root身份執行,su就可以順利執行成功了,執行成功之後我就是root身份了。
問題都清楚了,就是你需要把一個所有者是root的su拷貝到Android手機上,並且把su的許可權標誌位置成-rwsr-xr-x。能把這個事情搞定你就成功root了一個手機。
大概意思就是兩行代碼
cp /data/tmp/su /system/bin/ #copy su 到/system/分區
chown root:root su #su的所有者置成root
chmod 4775 /system/bin/su #把su置成-rwsr-xr-x
為什麼su一定要放到/system/bin/或者/system/xbin/
su不能放在data分區,原因是因為data分區在mount時就指定了不能給可執行程式加s位。在adb shell裡執行mount就可以看到:
Android的root學習