1. 求問android怎麼在代碼里獲得系統文件的讀寫許可權
本來以為就沒有辦法在應用程序這一層改系統時間了,後來在網上搜了好久,知道這個目的還是可以達到的。
第一個方法簡單點,不過需要在Android系統源碼的環境下用make來編譯:
1. 在應用程序的AndroidManifest.xml中的manifest節點中加入
android:sharedUserId="android.uid.system"這個屬性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。
第二個辦法麻煩點,不過不用開虛擬機跑到源碼環境下用make來編譯:
1. 同上,加入android:sharedUserId="android.uid.system"這個屬性。
2. 使用eclipse編譯出apk文件,但是這個apk文件是不能用的。
3. 用壓縮軟體打開apk文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件。
4. 使用目標系統的platform密鑰來重新給apk文件簽名。這步比較麻煩,
首先找到密鑰文件,在我的Android源碼目錄中的位置
是"build argetproctsecurity",下面的platform.pk8和platform.x509.pem
兩個文件。
然後用Android提供的Signapk工具來簽名,signapk的源代碼是
在"build oolssignapk"下,
用法為"signapk platform.x509.pem platform.pk8 input.apk output.apk",
文件名最好使用絕對路徑防止找不到,也可以修改源代碼直接使用。
這樣最後得到的apk和第一個方法是一樣的。
最後解釋一下原理,首先加入android:sharedUserId="android.uid.system"這個屬性。通過Shared User id,擁有同一個User id的多個APK可以配置成運行在同一個進程中。那麼把程序的UID配成android.uid.system,也就是要讓程序運行在系統進程中,這樣就有許可權來修改系統時間了。
只是加入UID還不夠,如果這時候安裝APK的話發現無法安裝,提示簽名不符,原因是程序想要運行在系統進程中還要有目標系統的platform
key,就是上面第二個方法提到的platform.pk8和platform.x509.pem兩個文件。用這兩個key簽名後apk才真正可以放入系統進程中。第一個方法中加入LOCAL_CERTIFICATE := platform其實就是用這兩個key來簽名。這也有一個問題,就是這樣生成的程序只有在原始的Android系統或者是自己編譯的系統中才可以用,因為這樣的系統才可以拿到 platform.pk8和platform.x509.pem兩個文件。要是別家公司做的Android上連安裝都安裝不了。試試原始的Android 中的key來簽名,程序在模擬器上運行OK,不過放到G3上安裝直接提示"Package ... has no signatures that match those in shared user android.uid.system",這樣也是保護了系統的安全。
java代碼 1、必須是Android系統開發人員,否則你無法修改init.rc等文件。 2、你的應用程序必須要獲得system許可權。 在應用層 你要想用代碼獲得系統文件許可權,除非你手機root了 要麼你自己坐rom。。。。 自己修改 init,rc
方法/步驟
1
首先找到你要操作的文件夾,這里用一個音效卡相關的文件夾做例子。選中文件夾。右擊它。選擇文件的屬性,安全--->高級。
2
更改所有者,如圖所示。在輸入對象名稱那兒,輸入你的賬戶名稱,我的是微軟賬戶。輸入完之後確定。
3
回到剛才的界面,你會看到所有者已經改變了,變成了你的賬號。然後確定退出,回到文件夾。(一定要確定後退出回到文件中,才能進行下一步)
4
再次回到剛才的界面。禁止所有繼承。
5
添加用戶。輸入賬號,我輸入的是微軟賬號。輸入後確定。
通過第三方軟體獲得Root許可權,可以訪問和修改手機操作系統里幾乎所有的文件,但這樣操作有可能影響手機的穩定性,出現死機、重啟等人為性故障。
另外獲取許可權後一般對存儲器和CPU等主板上主要部件引起不良。Root屬於修改操作系統軟體,按照條例不屬於包修范圍。為了提升顧客滿意度,對Root顧客提供免費升級固件服務,如果Root已影響到手機硬體需要更換主板,則需要收取主板費用。
若您的機器Root後需將機器恢復到原來的系統版本,請將機器送到服務中心,由售後工程師幫助檢查處理。自行將設備恢復出廠設置是無法取消Root許可權的。
對於已經獲取所有許可權的文件,建議大家還是恢復到原來的狀態。今天就跟大家分享一下如何恢復系統文件的默認許可權,Windows 7和Windows 8系統都是一樣的操作步驟。這里以平時最常修改的hosts文件為例,下圖顯示已獲取hosts文件所有許可權。已獲得所有許可權的hosts文件恢復許可權有點類似於於逆向操作,首先點選Administrators組(上圖藍色條),然後點擊下方的「高級」按鈕,切換到「所有者」標簽。高級安全設置-所有者在上面的窗口中,點擊「編輯」按鈕打開新窗口來更改所有者。編輯所有者到這一步,你會發現可更改的所有者並沒有當初替換時的TrustedInstaller,怎麼辦?別急,點擊「其他用戶或組」來添加它。在新開的窗口裡,輸入:NT SERVICE\TrustedInstaller,注意前面的NT SERVICE一定要加上,否則系統不認。添加TrustedInstaller用戶完成後點擊確定回到上一窗口,此時會看到TrustedInstaller用戶出現了,接下去就是選擇它,然後一路確定退出各個窗口。文件所有權恢復到默認狀態
File類裡面就有canRead,canWrite,canExecute方法啊。 查看原帖>>
麻煩採納,謝謝!
用re
先耐心的把這里的帖子看上幾頁,再多網路網路資料,不要手機一上手就玩這些要root許可權的內容,容易出問題,到時候問題越來越多。。。建議至少2周後再做這些事情,對你會很有幫助。 查看原帖>>
對於一般文件來說,是不需要開啟administrator賬戶的,只需要一個簡單的辦法就OK啦!比如說,對待下面的這種類型的文件夾。
2
我們只需要擊右鍵,選擇「管理員取得所有權」即可。
3
對於一些程序文件來說,只需要你擊右鍵,選擇「以管理員身份運行」,也是一個非常便捷的獲得管理員許可權的辦法。
END
開啟Administrator賬戶的方法
Windows 7系統中,administrator賬戶並不是默認開啟的,那麼就需要我們手動開啟,這也不是很難的啦!對計算機圖標,擊右鍵,選擇管理。
打開界面後,選擇本地用戶和組,單擊用戶,選擇administrator賬戶即可。
3
打開,administrator賬戶之後,按照以下的操作來進行就行了。
4
這樣,在開始登陸的界面,即可以出現administrator賬戶了,選擇此賬戶即可獲得管理員最高許可權,不過建議一般來說此賬戶還是不要開啟的好,如果此賬戶受損,再創建帳戶很容易失敗。還有,在第一次開啟此賬戶時,是不需要密碼的。
這個問題其實LBE已經解決了。 1.在2012隱私保護版中,每次運行時請求系統root,創建一個開機啟動服務libload.so,專門用於處理lbe自身的root請求。 2.在2013免root版中,首次運行時自動獲取系統root,並把破解過的su文件復制到/system/xbin/.sv ,然後給6755的許可權,專門用於處理lbe自身的root請求。 上述兩種方案,均為程序自帶root管理,用於解決其自身root請求。 以下代碼即為方案2的原理,附件中為修改過的su文件。 ******************************************* 安卓的su文件,基本原理為 1234567if (pid=DB(Allow)) then "get uid=0 root" 白名單,程序獲取rootelseif (pid=DB(Disable)) Return 黑名單,返回空else View"superuser.active" 資料庫無記錄,「授權管理」彈出root請求窗口endif修改後的su文件 1if (pid<>"") then "get uid=0 root" 無條件,返回root********************************************** 我反編譯b.apk,然後把java應用調用runtime.exec("su")的代碼全部改為runtime.exec("sa"), 然後重新打包簽名好。安裝這個軟體。 用RE文件管理器把上面附件的su改名為sa,復制到/system/xbin/sa並改許可權rwsx-rsx-r。 以後使用b.apk,獲取root許可權沒有任何提示。 su.zip大小:249.85K 已經過網路安全檢測,放心下載 點擊下載下載量:133
2. android系統的uid問題
不對,UID不是數字,PID才是,PID也沒有你說的那種情況。應用程序的UID是app_#,#代表數字。而系統進程的UID是root或者system
連上android設備或者模擬器,進入adb shell,top就可以看到當前所有進程。
3. android中如何生成uid
一般android系統會自動為應用生成一個uid,並且每個應用會被分配不同的UID
,用於管理各個應用的許可權以及
數據共享
。。。其次我查了一些資料。在AndroidMenifest.xml中
在
標簽裡面增加
android:sharedUserId="xxxx",「xxxx」就是你自定義的uid了。。