乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      五種控制Android應(yīng)用的權(quán)限的方法

       techres 2012-05-13

      3  權(quán)限控制的方法

        這里開始介紹各種控制Android權(quán)限的辦法??上У氖?,幾乎所有的手段都需要對(duì)設(shè)備進(jìn)行Root,如果不這么做,則需要付出不小代價(jià)。

        App Shield(國(guó)內(nèi)常見的名字:權(quán)限修改器)

         它是一個(gè)需要付費(fèi)的Android應(yīng)用,其原理是修改應(yīng)用程序的apk安裝包,刪除其中AndroidManifest.xml文件內(nèi),用于聲明權(quán)限的 對(duì)應(yīng)"Android.Permission.*"條目,然后再用一個(gè)公開的證書對(duì)安裝包重新簽名(需要允許"未知源"),這樣一來(lái),應(yīng)用程序就不會(huì)向系 統(tǒng)申請(qǐng)?jiān)人璧臋?quán)限。當(dāng)應(yīng)用運(yùn)行至相應(yīng)的流程時(shí),系統(tǒng)將直接拒絕,從而達(dá)到用戶控制權(quán)限的目的。

        對(duì)于已安裝的應(yīng)用,AppShield也會(huì)按照同樣方法制作好apk安裝包,然后讓用戶先卸載原始的應(yīng)用,再安裝調(diào)整過的應(yīng)用。除了該應(yīng)用數(shù)字簽名外,用戶可以隨時(shí)通過執(zhí)行同樣的流程,將吊銷的權(quán)限恢復(fù)。

      圖7 AppShield

      圖7 AppShield

        Apk文件的結(jié)構(gòu)

        Android應(yīng)用都是打包成以.apk擴(kuò)展名結(jié)尾,實(shí)際上是zip的文件格式。

        一個(gè)合法的apk至少需要這些成分:

        根目錄下的"AndroidManifest.xml"文件,用以向Android系統(tǒng)聲明所需Android權(quán)限等運(yùn)行應(yīng)用所需的條件。

        根目錄下的classes.dex(dex指Dalvik Exceptionable),應(yīng)用(application)本身的可執(zhí)行文件(Dalvik字節(jié)碼) 。

        根目錄下的res目錄,包含應(yīng)用的界面設(shè)定。(如果僅是一個(gè)后臺(tái)執(zhí)行的"service"對(duì)象,則不必需)

        Apk根目錄下的META-INF目錄也是必須的,它用以存放應(yīng)用作者的公鑰證書與應(yīng)用的數(shù)字簽名。

         當(dāng)應(yīng)用被安裝后,這個(gè)apk文件會(huì)原封不動(dòng)地移至設(shè)備的data/app目錄下,實(shí)際運(yùn)行的,則是Dalvik將其中Classes.dex進(jìn)行編譯后 的Classes.odex(存放在Dalvik緩存中,刷機(jī)時(shí)的'cache wipe就是清除Dalvik的odex文件緩存')。

        優(yōu)點(diǎn):

        完全不需要Root,適用于所有版本的Android設(shè)備。不會(huì)損壞系統(tǒng),可以吊銷任意一項(xiàng)Android權(quán)限。

        問題:

        1,需要重新安裝應(yīng)用,該行為可能會(huì)丟失應(yīng)用的配置、歷史記錄。

        2,執(zhí)行權(quán)限吊銷的應(yīng)用的數(shù)字簽名會(huì)被更改,無(wú)法直接更新。對(duì)于那些設(shè)計(jì)不良(沒有意料到'不聲明權(quán)限'情況的),或有額外自校驗(yàn)的應(yīng)用,可能會(huì)無(wú)法運(yùn)行。

        3,無(wú)法用于設(shè)備上的預(yù)裝應(yīng)用,除非制造商好心地將該應(yīng)用設(shè)置為"可以刪除"的狀態(tài)。

        4,這個(gè)方法修改了apk包中的內(nèi)容------盡管實(shí)際上AndroidManifest.xml和數(shù)字簽名并不算是應(yīng)用程序的本身,但修改它們可能引發(fā)著作權(quán)的問題。

        5,需要開啟"未知源"。

        6,這是一個(gè)收費(fèi)應(yīng)用。 

        CyanogenMod 7.1(及以上版本)

        Cyanogenmod是一款著名的第三方編寫的開源Android ROM。

         CM7.1加入了控制權(quán)限的開關(guān),官方的名稱是"Permission Revoking",任何非系統(tǒng)/保護(hù)應(yīng)用在安裝后,可直接吊銷任意一項(xiàng)權(quán)限,其效果等價(jià)于直接刪除apk包中AndroidManifest.xml的 對(duì)應(yīng)條目,但不會(huì)引發(fā)自校驗(yàn)的問題。CM的權(quán)限工具的作用等同于AppShield,無(wú)非是在Android自身的權(quán)限系統(tǒng)中添加了一個(gè)開關(guān)。

      圖8 Cyanogen Mod 7.1中的權(quán)限吊銷(Permission Revoking)設(shè)定

      圖8 Cyanogen Mod 7.1中的權(quán)限吊銷(Permission Revoking)設(shè)定

        優(yōu)點(diǎn):

        免費(fèi),使用簡(jiǎn)便,可隨時(shí),任意地吊銷、恢復(fù)非預(yù)裝應(yīng)用的任意一項(xiàng)權(quán)限;不存在數(shù)字簽名的問題,因而不影響使用自校驗(yàn)的應(yīng)用程序。

        問題:

        此功能僅在Cyanogen Mod 7.1及以上版本提供,無(wú)法用于其它rom。因?yàn)槭怯葾ndroid系統(tǒng)出面吊銷權(quán)限,其實(shí)現(xiàn)原理與App Shield完全相同,同樣的,應(yīng)用程序會(huì)因?yàn)樵O(shè)計(jì)不良而出現(xiàn)崩潰。  

        Permission Denied

        這是可以吊銷任意Android應(yīng)用(注意,不當(dāng)?shù)氐蹁N系統(tǒng)應(yīng)用的權(quán)限可能會(huì)導(dǎo)致手機(jī)固件損壞,無(wú)法啟動(dòng))的任意權(quán)限,對(duì)權(quán)限的修改在重啟后生效。

         實(shí)現(xiàn)原理應(yīng)該與Cyanogen Mod 7.1+完全相同,適用于任何已經(jīng)Root的系統(tǒng),因?yàn)橐话愕腁ndroid系統(tǒng)雖然事實(shí)上支持權(quán)限吊銷,但沒有像Cyanogen Mod那樣放置接口,因此需要重啟后才能應(yīng)用權(quán)限配置。同樣也有系統(tǒng)出面拒絕權(quán)限而導(dǎo)致的崩潰現(xiàn)象。

      圖9 Permission Denied免費(fèi)版吊銷應(yīng)用程序權(quán)限的場(chǎng)景

      圖9 Permission Denied免費(fèi)版吊銷應(yīng)用程序權(quán)限的場(chǎng)景

        優(yōu)點(diǎn):

        效果與Cyanogen Mod中的權(quán)限吊銷效果一致,且可吊銷系統(tǒng)應(yīng)用的權(quán)限。同時(shí)提供了免費(fèi)與收費(fèi)版本,免費(fèi)版并沒有基本功能的缺失。適用于所有版本號(hào)不低于1.6的Android設(shè)備。

        問題:

        調(diào)整后的權(quán)限需要重啟才能生效。設(shè)計(jì)不良的應(yīng)用會(huì)崩潰。不恰當(dāng)?shù)臋?quán)限修改會(huì)損壞系統(tǒng),導(dǎo)致無(wú)法開機(jī)。  

        PDroid

         PDroid實(shí)際上是一個(gè)Android內(nèi)核補(bǔ)丁加上一個(gè)用于管理的外部應(yīng)用。補(bǔ)丁需要在Recover環(huán)境中刷入系統(tǒng),也可以由開發(fā)者自行移植入系 統(tǒng)。該軟件在Android ASOP 2.3.4代碼基礎(chǔ)上開發(fā),僅適用于沒有改動(dòng)內(nèi)核的Android 2.3系統(tǒng),目前還未支持Android 4。

      圖10 PDroid的界面

      圖10 PDroid的界面

         為了避免Cyanogen Mod 7.1+權(quán)限吊銷(Permission revoking)導(dǎo)致的崩潰問題,以及后臺(tái)服務(wù)(如LBE,QQ手機(jī)管家等,PDroid的作者認(rèn)為通過后臺(tái)服務(wù)攔截權(quán)限并不是好辦法),PDroid 并不阻止應(yīng)用程序聲明權(quán)限,但會(huì)在其實(shí)際索取相關(guān)信息時(shí),予以阻止。通俗地說(shuō),就是簽署協(xié)議但不執(zhí)行。在PDroid的用戶界面,用戶能隨時(shí)精確地控制涉 及隱私的各項(xiàng)權(quán)限。對(duì)于某些內(nèi)容,除了阻止外,用戶還可以偽造一個(gè)隨機(jī)或指定的數(shù)據(jù)。

        可控制的內(nèi)容包括:

        IMEI(可偽造)

        IMSI(可偽造)

        SIM卡序列號(hào)(可偽造)

        手機(jī)號(hào)碼(可偽造)

        來(lái),去電號(hào)碼

        SIM卡信息

        當(dāng)前蜂窩網(wǎng)絡(luò)信息

        (以上七者均來(lái)自Android.Permission.READ_PHONE_STATE)

        GPS定位信息 (可偽造,來(lái)自Android.Permission.FINE_LOCATION)

        基站定位   (可偽造,來(lái)自Android.Permission.COARSE_LOCATION)

        系統(tǒng)自帶瀏覽器的歷史,書簽(Android.Permission.BOOKMARKS)

        聯(lián)系人    (android.permission.READ_CONTACTS)

        通話記錄   (android.permission.READ_CONTACTS)

        系統(tǒng)日志   (android.permission.READ_LOGS)

        當(dāng)前賬戶列表   (android.permission.GET_ACCOUNTS)

        當(dāng)前賬戶的授權(quán)碼  (android.permission.USE_CREDENTIALS)

        短信,彩信 (可能與這5個(gè)權(quán)限有關(guān))

                android.permission.READ_SMS

                android.permission.RECEIVE_SMS

                android.permission.SEND_SMS

                android.permission.WRITE_SMS

                android.permission.RECEIVE_MMS

        日歷    android.permission.READ_CALENDAR

         PDroid的內(nèi)核補(bǔ)丁并不通用,每一個(gè)Rom都需要特定的補(bǔ)丁。開發(fā)者除了提供了幾個(gè)特定機(jī)型下Cyanogen Mod,HTC Sense修改版ROM的專用補(bǔ)丁外,還推出了一個(gè)補(bǔ)丁生成工具(PDroid Patcher),用戶可以給自己的ROM生成專用的內(nèi)核補(bǔ)丁。使用該P(yáng)atcher需要安裝JDK(java Development Kit)。

        優(yōu)點(diǎn):

        PDroid避免了通過Android系統(tǒng)進(jìn)行權(quán)限吊銷的導(dǎo)致的潛在崩潰問題,也不需要后臺(tái)服務(wù)。對(duì)隱私信息的控制是最精細(xì)的。盡管設(shè)備必須Root,但應(yīng)用本身不需要Root權(quán)限。

        問題:

        安裝過程是最繁瑣,最不可靠的,容易導(dǎo)致ROM損壞,適用范圍也小,需要用戶有相當(dāng)?shù)募寄?能安裝JDK,會(huì)刷機(jī))才可使用;只提供對(duì)隱私有關(guān)權(quán)限的控制,不提供網(wǎng)絡(luò)訪問,的控制。以這些為代價(jià),它幾乎沒有其它缺點(diǎn)。  

        LBE安全大師

        實(shí)際上最常用的是以LBE為代表的通過一個(gè)Root權(quán)限的后臺(tái)服務(wù)來(lái)攔截相關(guān)行為的工具。除了LBE外,還有QQ手機(jī)管家等應(yīng)用。這里以LBE安全大師為例介紹。

      圖11 LBE安全大師

      圖11 LBE安全大師

         LBE是國(guó)內(nèi)一個(gè)叫"LBE安全小組"開發(fā)的工具,支持Android2.0~4.0。它的核心功能是像殺毒軟件一般,通過一個(gè)需要Root權(quán)限的后臺(tái) 服務(wù),劫持所有調(diào)用權(quán)限的行為,并放行用戶許可的部分(其官方宣傳為'API級(jí)別攔截')。它和PDroid一樣幾乎不會(huì)引發(fā)應(yīng)用程序崩潰,它支持?jǐn)r截幾 個(gè)涉及用戶的關(guān)鍵權(quán)限(LBE手機(jī)管家3.1/3.2):

        讀取短信  (android.permission.READ_CONTACTS)

        聯(lián)系人記錄  (android.permission.READ_CONTACTS)

        通話記錄  (android.permission.READ_CONTACTS)

        定位   (Android.Permission.COARSE_LOCATION

              Android.Permission.FINE_LOCATION)

        手機(jī)識(shí)別碼  (與Android.Permission.READ_PHONE_STATE有關(guān))

        通話狀態(tài)  (與Android.Permission.READ_PHONE_STATE有關(guān))

        發(fā)送短信(具體原理不明,同樣類似于禁止這五個(gè)權(quán)限

              android.permission.READ_SMS

              android.permission.RECEIVE_SMS

              android.permission.SEND_SMS

              android.permission.WRITE_SMS

              android.permission.RECEIVE_MMS)

        撥打電話  (android.permission.CALL_PHONE)

        通話監(jiān)聽  (android.permission.PROCESS_OUTGOING_CALLS)

        除此以外,LBE還可以分別控制應(yīng)用在Wifi,手機(jī)網(wǎng)絡(luò)的聯(lián)網(wǎng)權(quán)限,其原理是依靠IPtables防火墻,而非通過Android的"Internet"權(quán)限。

        此外LBE手機(jī)管家還提供基于智能內(nèi)容審查的短信攔截、來(lái)電歸屬地顯示,以及禁用系統(tǒng)(保護(hù))應(yīng)用,進(jìn)程管理,殺毒等功能。

        LBE提供兩個(gè)版本,一個(gè)叫"LBE安全大師",是一個(gè)全面的手機(jī)管家類應(yīng)用,更新比較頻繁,另一個(gè)版本(LBE手機(jī)隱私衛(wèi)士,LBE Security lite)僅提供權(quán)限方面的管理。

        考慮到主要市場(chǎng)在國(guó)內(nèi),LBE的發(fā)行策略看上去有些奇怪,它在Google的官方市場(chǎng)并不發(fā)行最新版。通常只能只能在LBE的官方網(wǎng)頁(yè),以及國(guó)內(nèi)的應(yīng)用市場(chǎng)獲得最新版本。

        優(yōu)點(diǎn):

        使用非常簡(jiǎn)單,功能強(qiáng)大而全面,風(fēng)險(xiǎn)很小,可以控制系統(tǒng)應(yīng)用。適用范圍廣,有很多替代產(chǎn)品。

        問題:

        需要后臺(tái)服務(wù) (盡管蠶豆網(wǎng)有個(gè)評(píng)測(cè),認(rèn)為它對(duì)能耗幾乎沒有影響),不能控制所有的Android權(quán)限。     

        4  自啟動(dòng)的控制

        Android對(duì)后臺(tái)服務(wù)有著最好的支持。

        在Android中可以自由地開發(fā)一種稱為'Service'的后臺(tái)運(yùn)行的對(duì)象,加上沒有蘋果公司對(duì)應(yīng)用程序的嚴(yán)格限制。諸如QQ掛機(jī),即時(shí)調(diào)用第三方應(yīng)用程序之類的形式都可以輕易實(shí)現(xiàn)。

        為了全面支持后臺(tái)服務(wù),也為了適應(yīng)移動(dòng)設(shè)備資源緊張,不得不經(jīng)常清理內(nèi)存的問題,應(yīng)用可在系統(tǒng)中設(shè)置觸發(fā)器,當(dāng)系統(tǒng)發(fā)生了某個(gè)特定特定事件時(shí)(系統(tǒng)啟動(dòng),撥打電話,收發(fā)信息,安裝、卸載應(yīng)用,插上電源等,或應(yīng)用程序自行定義的事件),就會(huì)觸發(fā)啟動(dòng)應(yīng)用程序。

        AutoStarts 自啟動(dòng)管理

        AutoStarts是一個(gè)收費(fèi)應(yīng)用,通過它,用戶能了解系統(tǒng)中每一項(xiàng)程序會(huì)在什么場(chǎng)合下被觸發(fā)運(yùn)行。如果提供Root權(quán)限,則還能禁止這樣的行為。

         這里以Google Maps應(yīng)用6.2版為例。默認(rèn)情況下,這款應(yīng)用總是會(huì)保持后臺(tái)運(yùn)行,并每小時(shí)向Google發(fā)送一次當(dāng)前用戶的位置信息。為了阻止這樣的行為,需要聯(lián)合 使用AutoStarts與任意一款進(jìn)程管理應(yīng)用:在AutoStarts中,阻止Google Maps的自行啟動(dòng)(如圖),在每次使用完后,把Google Maps的進(jìn)程殺掉。

      圖12 AutoStarts可以對(duì)自啟動(dòng)項(xiàng)目進(jìn)行修改

      圖12 AutoStarts可以對(duì)自啟動(dòng)項(xiàng)目進(jìn)行修改 

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多