當前位置:首頁 » 安卓系統 » androidroot代碼

androidroot代碼

發布時間: 2022-06-20 12:01:40

① Android如何使用代碼獲得root許可權

最簡單的方法,使用一鍵root(推薦你還是使用第三方刷機工具進行破解ROOT,Z4ROOT只是給你一個方法,但是都是一樣的,那就是破解ROOT,你可以試試甜椒,卓大師,刷機精靈,網路,360,綠豆,深度刷機等等,,,如果都不行,再試試手機端破解,KINGROOT,Z4ROOT.):
1、首先下載z4root軟體並安裝到手機中,安裝完成後打開z4root軟體。
2、打開後將會出現兩個選項,第一個是臨時root,也就是reboot(重啟)後就會還原回未root狀態,第二個就是永久root了,使用第二個以後,我們重新開機也不再需要root許可權了。
3、選擇一項進入後,軟體就會自動對手機進行root,完全不用我們手工進行操作,非常得方便。
4、經過一段時間的等待之後,如果成功的話,會在軟體菜單中增加一個授權管理的圖標,有了這個圖標就表示我們的手機已經root成功了,現在你想怎麼用就怎麼用了。
不過z4root也有許多不足的地方,z4root也不是全能,並不能支持所有的安卓手機進行root,不能使用z4root進行root的椒友們只能通過其它方法進行root了。
不過,軟體法失敗率也不低,一般情況下刷機法更為可靠,互聯網上有各種機型的各種教程,因此通常情況下不建議使用軟體法。

② 修改android哪一小部分源代碼,實現整機root

獲取Android的ROOT許可權其實很簡單,只要在Runtime下執行命令"su"就可以了。

復制代碼代碼如下:

// 獲取ROOT許可權
public void get_root(){

if (is_root()){
Toast.makeText(mCtx, "已經具有ROOT許可權!", Toast.LENGTH_LONG).show();
}
else{
try{
progress_dialog = ProgressDialog.show(mCtx,
"ROOT", "正在獲取ROOT許可權...", true, false);
Runtime.getRuntime().exec("su");
}
catch (Exception e){
Toast.makeText(mCtx, "獲取ROOT許可權時出錯!", Toast.LENGTH_LONG).show();
}
}

}

其中is_root()判斷是否已經具有了ROOT許可權。只要/system/bin/su、/system/xbin/su這兩個文件中有一個存在,就表明已經具有ROOT許可權,如果兩個都不存在,則不具有ROOT許可權。

復制代碼代碼如下:

// 判斷是否具有ROOT許可權
public static boolean is_root(){

boolean res = false;

try{
if ((!new File("/system/bin/su").exists()) &&
(!new File("/system/xbin/su").exists())){
res = false;
}
else {
res = true;
};
}
catch (Exception e) {

}
return res;

③ 如何使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 許可權。
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請~~哦

④ 怎麼用代碼判斷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 app 如何用代碼實現ROOT

手機root許可權,是系統許可權的一種。很多手機都自帶很多沒用的軟體。但是自己卻不能刪除這些軟體,因為自己的許可權不夠。這時候,只要把手機ROOT一遍,就能擁有手機的最高許可權了。隨意刪除手機裡面的任何軟體。

Root許可權的獲取方式:
1.用手機連接電腦,下載一鍵root工具。
2.下載成功後,打開一鍵ROOT軟體。會出現root准備,點擊下一步,正式開始root。
3.檢查root條件,要是需要文件備份的話,一定要備份後。點擊開始ROOT。
4.root正式開始,需要幾鍾左右時間,期間可能會重啟數次,root就會完成。
5.root完成後,就可以隨意刪除手機中的垃圾應用了包括系統應用。

⑥ Android應用程序怎樣獲取root許可權

Android應用程序獲取root許可權,前提時設備必須已經破解過,能夠執行su命令之後,就可以使用String apkRoot="chmod 777 "+getPackageCodePath(); RootCommand(apkRoot);方式來給應用程序賦予足夠的root許可權,代碼如下:

一、建一個方法:代碼如下:
package cn.ycmoon.utility;

import java.io.DataOutputStream;

import android.app.Activity;
import android.util.Log;

public class SystemManager extends Activity
{
/**
* 應用程序運行命令獲取 Root許可權,設備必須已破解(獲得ROOT許可權)
* @param command 命令:String apkRoot="chmod 777 "+getPackageCodePath(); RootCommand(apkRoot);
* @return 應用程序是/否獲取Root許可權
*/
public static boolean RootCommand(String command)
{
Process process = null;
DataOutputStream os = null;
try
{
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (Exception e)
{
Log.d("*** DEBUG ***", "ROOT REE" + e.getMessage());
return false;
} finally
{
try
{
if (os != null)
{
os.close();
}
process.destroy();
} catch (Exception e)
{
}
}
Log.d("*** DEBUG ***", "Root SUC ");
return true;
}
}

二、在應用程序的MainActivity方法中:

public class MainActivity extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String apkRoot="chmod 777 "+getPackageCodePath();
SystemManager.RootCommand(apkRoot);
}
}

⑦ android怎樣在代碼里判斷系統是否root

在Android中,雖然我們可以通過Runtime.getRuntime().exec("su")的方式來判斷一個手機是否Root,
但是該方式會彈出對話框讓用戶選擇是否賦予該應用程序Root許可權,有點不友好。

其實我們可以在環境變數$PATH所列出的所有目錄中查找是否有su文件來判斷一個手機是否Root。

當然即使有su文件,也並不能完全表示手機已經Root,但是實際使用中作為一個初略的判斷已經很好了。

另外出於效率的考慮,我們可以在代碼中直接把$PATH寫死。

例子如下:

private final static int kSystemRootStateUnknow=-1;
private final static int kSystemRootStateDisable=0;
private final static int kSystemRootStateEnable=1;
private static int systemRootState=kSystemRootStateUnknow;

public static boolean isRootSystem()
{
if(systemRootState==kSystemRootStateEnable)
{
return true;
}
else if(systemRootState==kSystemRootStateDisable)
{

return false;
}
File f=null;
final String kSuSearchPaths[]={"/system/bin/","/system/xbin/","/system/sbin/","/sbin/","/vendor/bin/"};
try{
for(int i=0;i<kSuSearchPaths.length;i++)
{
f=new File(kSuSearchPaths[i]+"su");
if(f!=null&&f.exists())
{
systemRootState=kSystemRootStateEnable;
return true;
}
}
}catch(Exception e)
{
}
systemRootState=kSystemRootStateDisable;
return false;
}

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

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

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

如果android手機開啟了root許可權,就和Linux系統的root許可權一樣,主要就是活動了管理員許可權(最高許可權)。在android系統中,如果手機已經root,linux系統就會在底層生成一個以su結尾的文件,su是super的意思,代表超級許可權(也叫完全設備管理許可權),這時就代表手機開啟了root,如下圖所示:

代碼如下:

public static boolean isRoot()throws Exception{
boolean isRoot = false;
File su=new File("/system/bin/su");
File su2=new File("/system/bin/su");
if (su.exists() && su2.exists()){
isRoot = true;
} else {
isRoot = false;
}
return isRoot;
}

⑩ android中如何通過代碼檢測是否有root許可權

【Android】Android 代碼判斷是否獲取ROOT許可權
方法比較簡單,直接粘貼代碼
public synchronized boolean getRootAhth()
{
Process process = null;
DataOutputStream os = null;
try
{
process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes("exit\n");
os.flush();
int exitValue = process.waitFor();
if (exitValue == 0)
{
return true;
} else
{
return false;
}
} catch (Exception e)
{
Log.d("*** DEBUG ***", "Unexpected error - Here is what I know: "
+ e.getMessage());
return false;
} finally
{
try
{
if (os != null)
{
os.close();
}
process.destroy();
} catch (Exception e)
{
e.printStackTrace();
}
}
}

熱點內容
移動光貓如何自行修改密碼 發布:2025-05-16 08:20:15 瀏覽:123
作為基線存儲 發布:2025-05-16 08:15:22 瀏覽:858
安卓怎麼關閉手機應用推薦 發布:2025-05-16 08:03:38 瀏覽:929
sql內置函數 發布:2025-05-16 08:03:34 瀏覽:922
怎麼看伺服器內存型號 發布:2025-05-16 08:03:30 瀏覽:812
哪裡修安卓手機最好 發布:2025-05-16 07:58:25 瀏覽:825
伺服器和電腦是什麼區別 發布:2025-05-16 07:58:24 瀏覽:720
安卓116是什麼意思 發布:2025-05-16 07:44:59 瀏覽:591
配置低而動力好的車怎麼選 發布:2025-05-16 07:44:15 瀏覽:900
如何退出登錄的伺服器界面 發布:2025-05-16 07:41:58 瀏覽:71