當前位置:首頁 » 編程軟體 » android編譯root許可權

android編譯root許可權

發布時間: 2022-07-31 14:02:56

Ⅰ 怎麼用代碼判斷android手機是否開啟了ROOT許可權

android手機開啟了root許可權,主要是根據root之後,獲取了手機的最高許可權,底層linux系統就會生成一個以su結尾的文件,su代表super超級許可權,如下代碼:
/**
* 判斷當前手機是否有ROOT許可權
* @return
*/
public boolean isRoot(){
boolean bool = false;

try{
if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())){
bool = false;
} else {
bool = true;
}
Log.d(TAG, "bool = " + bool);
} catch (Exception e) {

}
return bool;
}
android底層是使用linux進行編譯和一些驅動、網路管理的,所以可以根據linux的許可權特性來判斷是否root,許可權的管理在linux裡面很多,包括讀寫、刪除文件的許可權,也有關於訪問網路的許可權,這些許可權都需要開通才能有。

Ⅱ Android aosp源碼編譯後root許可權問題

ROOT獲得最高許可權是刪除這些應用的唯一途徑
實際手動操作的流程非常復雜,並且有版本限制
我推薦你款不錯的手機ROOT工具吧,
我一直都是在用的,很不錯
使用應用寶獲取手機root許可權在工具
選項里找到一鍵ROOT即可或者KINGROOT也行。

Ⅲ Android 的提權 (Root) 原理是什麼

Android的內核就是Linux,所以Android獲取root其實和Linux獲取root許可權是一回事兒。

你想在Linux下獲取root許可權的時候就是執行sudo或者su,接下來系統會提示你輸入root用戶的密碼,密碼正確就獲得root許可權了。Android本身就不想讓你獲得Root許可權,大部分手機出廠的時候根本就沒有su這個程序。所以你想獲得Android的root許可權,第一步就是要把編譯好的su文件拷貝到Android手機的/system/bin或者/system/xbin/目錄下。我們先假設你可以把su放在bin下,接下來你可以在Android手機的adb shell或者串口下輸入su了。上面說了,執行su,系統會提示你輸入root用戶密碼,但你怎麼可能知道密碼呢?暴力破解嗎?破解root的黑客當然不會這么做,這就涉及到第二個問題。

一般我們在Linux的console下輸入 ls -l 會列出所有文件的許可權。

比如:-rwxr-xr-x,用過Linux的人都知道r代表該文件可讀,w代表可寫,x代表可執行,-就代表沒有該許可權。第一個rwx代表文件所有者的許可權,第二個rwx代表和所有者同組人的許可權,第三個rwx代表其他用戶對該文件的許可權。但下面這個文件就比較特殊。

rws,它的執行許可權標志位是一個s,s代表當任何一個用戶執行該文件的時候都擁有文件所有者的許可權,這文件的所有者是root,簡單點說就是不管誰執行這個文件,他執行的時候都是以root身份執行的。那root用戶執行任何文件都是不需要密碼的。

這個時候如果你把su文件的許可權置成-rwsr-xr-x會發生什麼?su這個程序本來就是賦予執行者root許可權的,但執行的時候又不需要密碼,所以執行一下這個文件就自動成root身份了。

問題都清楚了,就是你需要把su拷貝到Android手機上,並且把su許可權標志位置成-rwsr-xr-x。能把這個事情搞定你就成功root了一個手機。

大概意思就是兩行代碼

cp /data/tmp/su /system/bin/ # su 到/system/分區

chmod 1775 /system/bin/su #把su置成-rwsr-xr-x

那怎麼搞定這個事情呢?Android的system分區本身不可寫,只有是root的許可權才能改動它,執行不了啊。

一個辦法就是找一個本身已經有root許可權的進程來啟動我上面的兩行代碼,那我這兩行代碼一啟動就是root許可權,就可以順利執行了。但是已經有root許可權的進程都是出廠時候就裝到手機上的,代碼寫死了,你沒法控制它執行你自己的代碼啊。這個時候就需要你找漏洞了,比如用來破解Android2.3 root許可權的zergRush漏洞就是利用一個擁有root許可權的進程棧溢出漏洞,棧溢出說白了就是這個進程讀到了自有內存之外的地址空間,這段內存空間沒分配給它,誰都能寫這段內存,那我就可以把自己的兩行代碼預先寫到這里,運行zergRush代碼,然後等那個倒霉的進程執行我就行了。

如果各位有一定基礎,能看懂我上面講的,就基本知道原理其實並不難,難點在於找到漏洞。

zergRush的代碼在這兒:

revolutionary/zergRush · GitHub

Ⅳ 在android源碼下編譯apk能有root許可權嗎

編譯apk和root許可權沒有聯系,apk是應用程序,root許可權是android系統里的設置,android系統不給root許可權,在源碼下編譯apk也是無用的

Ⅳ Android 手機如何獲得 root 許可權

Android 手機獲得 root 許可權

  1. 要想獲取root許可權就需要使用root工具,現在網路root、卓大師、騰訊管家等常用工具都有獲取root許可權的功能。不過有的工具支持的機型不多。 這里卓大師的感覺支持的機型多點, 大家可以下載自己喜歡的工具來使用!或者使用網路這樣大公司研發的工具。

    Ⅵ Android 程序如何通過編程獲取 root 許可權運行

    Android是基於linux,在linux系統里,想通過root許可權運行程序,需要使用su命令先切換到root用戶,然而在Android系統里沒有預置su命令,因此如果使用root許可權,需要在linux系統中進行非法提權,俗稱就是破解ROOT,一般情況下都是通過發現內核漏洞,讓系統執行一小塊代碼,這段代碼能充分利用該漏洞,從而非法獲取ROOT許可權。
    獲取了ROOT許可權之後,就可以為所欲為,植入su命令到系統就可以了。
    因此,對於已經破解ROOT的android系統,想通過ROOT許可權運行,先執行su即可。
    如果尚未破解ROOT,需要在程序中先破解ROOT,通常情況下,不同版本的android的系統,使用的破解代碼也不一樣。

    Ⅶ 對安卓手機進行root的原理是什麼

    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。

    Ⅷ 有android源碼的情況下怎麼開放系統的root許可權

    編譯的時候選debug版本 然後編譯完成之後通過adb remout和adb root就可以了

    Ⅸ 如何讓android 程序 獲得 root許可權

    一般來說, Android 下的應用程序可以「直接」得到的最大的許可權為 system ,但是如果我們需要在程序中執行某些需要 root 許可權的命令,如 ifconfig 等,就需要 root 許可權了。按照 Simon 的文章中提到的,應用程序有以下兩種辦法臨時獲得 root 許可權:
    1) 實現一個 init 實現一個 Service ,來幫助 Android 應用程序執行 root 許可權的命令。
    2) 實現一個虛擬設備,這個設備幫助 Android 應用程序執行 root 許可權的命令。

    第二種辦法我這里沒有嘗試,暫時也不會。這里講講我在實現第一種辦法的過程和遇到的一些問題。

    1. 將我們要執行的命令寫成腳本,或者可執行程序。
    下面是我的腳本 ifconfig_test.sh :

    # ! /system/bin/sh
    ifconfig
    注意: 腳本的第一行必須為 # ! /system/bin/sh ,否則無法執行,通過 dmesg 可以查看到信息內容為 cannot execve ./ifconfig_test.sh: Exec format error

    也可以採用 C/C++ 編寫需要執行的命令或者程序,並在編譯 image 的時候編譯成可執行程序。

    2. 在 init.rc 中注冊 service
    Android 中的 service 需要在 init.rc 中注冊, Init.rc 中定義的 Service 將會被 init 進程創建,這樣將可以獲得 root 許可權。當得到相應的通知(通過屬性設置)後, init 進程會啟動該 service 。
    本文中注冊的內容如下:

    service ifconfig_test /system/etc/ifconfig_test.sh
    oneshot
    disabled
    其中, oneshot 表示程序退出後不再重新啟動, disabled 表示不在系統啟動時啟動。

    注意: 這里 service name 不能超過 16 個字元。我之前的 service name 由於定義的比較長, 18 個字元,設置屬性通知 service 啟動後查看 dmesg 可以看到提示: init: no such service 。查看 /system/core/init/parser.c 的源代碼,在 parse_service->valid_name 函數中可以看到如下內容: if (strlen(name) > 16) { return 0; } ,證明 service 的名字的確不能超過 16 個字元。

    3. 將 Android 應用程序提升為 system 許可權
    既然應用程序可以通過啟動 service 獲得 root 許可權,那麼豈不是很不安全。 Android 考慮到了這點,規定只有 system 許可權的應用程序才能設置屬性,通知 service 啟動。關於提升 system 許可權的文章網上已有很多,這里就不再細說,

    4. 在應用程序中添加屬性設置代碼
    前面已經提到,對於 Android 來說,應用程序通知 init 啟動 service 是通過設置系統屬性來完成的,具體為設置 System 系統屬性 「ctl.start」 為 「ifconfig_test」 ,這樣 Android 系統將會幫我們運行 ifconfig_test 這個 service 了。
    對該系統屬性的設置有三種方法,分別對應三種不同的應用程序:
    1) Java 代碼
    Android 在 Java 庫中提供 System.getProperty 和 System.setProperty 方法, Java 程序可以通過他們來設置和獲得屬性。代碼如下:
    SystemProperties.set("ctl.start", "ifconfig_test");
    上面的代碼是通知 Android 執行 ifconfig_test service ,如果需要查詢當前 service 執行的狀態,如是否執行完畢,可以通過如下代碼查詢:
    ret = SystemProperties.get("init.svc. ifconfig_test ", "");
    if(ret != null && ret.equals("stopped"))
    {
    return true;
    }
    2) JNI 代碼
    當編寫 NDK 的程序時,可以使用 property_get 和 property_set 這兩個 API 來獲得和設置屬性。使用這兩個 API 必須要包含頭文件 cutils/properties.h 和鏈接 libcutil 庫。

    3) Shell 腳本
    Android 提供了命令行 setprop 和 getprop 來設置和獲取屬性,他們可以在腳本中被使用。

    由於我的程序是在 JNI 中調用腳本,腳本中又執行 ifconfig ,因此我將設置屬性的部分放在了腳本中完成,代碼如下:
    setprop ctl.start ifconfig_test

    #wait for the service until it stops
    ret=1
    while [ $ret -ne 0 ]
    do
    getprop | grep "$ENABLE_MAPPER_SRV" | grep stopped
    ret=$?
    done
    通過上面 4 個步驟, Android 應用程序就獲得了 root 許可權,更具體的說,是在執行我們需要執行的命令時臨時獲得了 root 許可權。
    轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦

熱點內容
phpmysql存儲過程實例 發布:2025-02-08 19:54:40 瀏覽:159
淘寶賣的地下城腳本 發布:2025-02-08 19:41:40 瀏覽:61
安卓怎麼把提升畫質關了 發布:2025-02-08 19:40:11 瀏覽:359
我想你加密 發布:2025-02-08 19:39:24 瀏覽:211
java手機號正則表達式 發布:2025-02-08 19:34:50 瀏覽:350
ue加密 發布:2025-02-08 19:34:05 瀏覽:473
滁州壓縮機 發布:2025-02-08 19:34:03 瀏覽:880
壓縮棉花絮片 發布:2025-02-08 19:33:12 瀏覽:394
存儲異丙醇 發布:2025-02-08 19:33:09 瀏覽:149
怎麼運行android源碼 發布:2025-02-08 19:28:38 瀏覽:412