国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
保護(hù)你的隱私,五種控制Android應(yīng)用的權(quán)限的方法

保護(hù)你的隱私,五種控制Android應(yīng)用的權(quán)限的方法

  這篇文章目的在于介紹Android系統(tǒng)上控制權(quán)限的方法,讀者只要使用過(guò)Android,或是對(duì)智能機(jī)平臺(tái)有所了解,就能看懂,不需要專(zhuān)門(mén)的編程知識(shí)。

  1  為什么Android總是事無(wú)巨細(xì)地告訴你應(yīng)用索取的每一項(xiàng)權(quán)限?

  相比Apple,Microsoft嚴(yán)格控制生態(tài)系統(tǒng)(從蘋(píng)果給開(kāi)發(fā)者的"App Store Guideline"可見(jiàn)一斑),只允許通過(guò)官方應(yīng)用商店安裝應(yīng)用,并對(duì)每份上傳進(jìn)行仔細(xì)地審查而言,Android的開(kāi)放就意味著,Google需要向用戶提供一系列用于為自己負(fù)責(zé)的流程、工具。所以在安裝應(yīng)用前,Android總是要事無(wú)巨細(xì)地告訴你,應(yīng)用肯需要控制什么權(quán)限。

  同樣,開(kāi)發(fā)者也制作了一系列易用的工具,用以鑒別可疑的應(yīng)用程序,或是控制權(quán)限。

圖1 Android 官方市場(chǎng)會(huì)強(qiáng)制提醒用

  Andoird哪里開(kāi)放了?

  在Android中,用戶能自由從本地安裝應(yīng)用,自由地對(duì)SD卡進(jìn)行操作,自由選擇應(yīng)用市場(chǎng)。

  如果愿意放棄保修,用戶還能輕易地實(shí)行root,解鎖基帶(baseband)。只有一些產(chǎn)品會(huì)嚴(yán)密地鎖定bootloader(如摩托羅拉)。

  最重要的是,因?yàn)锳SOP(Android源代碼開(kāi)放計(jì)劃)的存在,絕大部分的Android代碼都是開(kāi)源的,開(kāi)發(fā)者可以由此對(duì)Android系統(tǒng)進(jìn)行深入的修改,甚至可以自行編寫(xiě)一個(gè)符合Android規(guī)范的系統(tǒng)實(shí)例(如Cyanogen Mod)。正是因?yàn)锳SOP,這篇文章才可能介紹多達(dá)5種原理不同的權(quán)限控制方法。

圖2 Android開(kāi)源計(jì)劃的標(biāo)志

  開(kāi)放的風(fēng)險(xiǎn)

  不考慮Symbian,Windows Phone 6.5(及以下)平臺(tái),那么幾乎所有的智能手機(jī)病毒都是Android平臺(tái)的,甚至官方Android Market也鬧過(guò)幾次烏龍。在國(guó)內(nèi)水貨橫行的市場(chǎng),情況更是火上澆油,不法業(yè)者可以在手機(jī)的ROM,甚至是bootloader中做好手腳,讓用戶有病無(wú)法醫(yī)。

  在Android中,用戶可以允許系統(tǒng)安裝來(lái)自"未知源"(也就是非Google官方的,或手機(jī)預(yù)置市場(chǎng)的)應(yīng)用程序。于是,移動(dòng)平臺(tái)最重要的門(mén)神------數(shù)字簽名就被繞過(guò)了。

圖3 Android 允許未知安裝未知來(lái)源的應(yīng)用程

  出于Android的開(kāi)放性,也有不允許"未知源"的反例:亞馬遜的Kindle Fire平板使用了深度定制的Android,它只允許安裝來(lái)自亞馬遜官方商店的應(yīng)用程序。

圖4 亞馬遜的 Kindle Fire 僅允許通過(guò)自帶的市場(chǎng)安裝應(yīng)用

 

  2  Android有哪些"權(quán)限"

  首先需要明確一下Android中的種種"權(quán)限"。Android是在Linux內(nèi)核上建立一個(gè)硬件抽象層(Android HAL),通過(guò)Dalvik以及各種庫(kù)來(lái)執(zhí)行android應(yīng)用的。在手機(jī)啟動(dòng)時(shí),首先需要由Bootloader(HTC手機(jī)上稱(chēng)作Hboot)引導(dǎo)Linux及手機(jī)上各個(gè)硬件設(shè)備的驅(qū)動(dòng)程序,之后才啟動(dòng)Android系統(tǒng)。所以其實(shí)我們會(huì)涉及到四種不同涵義的權(quán)限:

  Android權(quán)限(Permission)

  這指Android中的一系列"Android.Permission.*"對(duì)象,是本文的中心內(nèi)容。

  Google在Android框架內(nèi)把各種對(duì)象(包括設(shè)備上的各類(lèi)數(shù)據(jù),傳感器,撥打電話,發(fā)送信息,控制別的應(yīng)用程序等)的訪問(wèn)權(quán)限進(jìn)行了詳細(xì)的劃分,列出了約一百條"Android.Permission"。應(yīng)用程序在運(yùn)行前必須向Android系統(tǒng)聲明它將會(huì)用到的權(quán)限,否則Android將會(huì)拒絕該應(yīng)用程序訪問(wèn)通過(guò)該"Permission"許可的內(nèi)容。

  比方說(shuō),搜狗輸入法提供了一個(gè)智能通訊錄的功能,用戶可以在輸入聯(lián)系人拼音的前幾個(gè)字符,或首字母,輸入法就能自動(dòng)呈現(xiàn)相關(guān)聯(lián)系人的名字。為了實(shí)現(xiàn)這個(gè)功能,輸入法必須聲明它需要讀取手機(jī)中聯(lián)系人的能力,也就是在相關(guān)代碼中加上聲明"android.permission.READ_CONTACTS"對(duì)象。

圖5 搜狗輸入法的智能聯(lián)系人功能

  原生Android只提供了對(duì)"一刀切"式的管理,要么同意使用,否則就根本就不安裝應(yīng)用程序。當(dāng)用戶遇到希望使用程序的同時(shí),又想禁止部分Permission的場(chǎng)合,他就無(wú)路可走。

  于是,不少開(kāi)發(fā)者就搗鼓出了"第三條道路";可惜的是,沒(méi)有一種方法能同時(shí)做到既不需要將手機(jī)固件Root,又完全不涉及對(duì)原始應(yīng)用程序進(jìn)行反向工程的方法。

  Root

  Root指獲得Android所在的Linux系統(tǒng)的Root(根)權(quán)限,有了根權(quán)限,你才能對(duì)Linux做出任意的修改。iOS中的越獄(Jailbreak) 相當(dāng)于獲得iOS系統(tǒng)的Root權(quán)限(iOS是一種類(lèi)Unix系統(tǒng),和Linux都使用Root的概念)。在已Root的設(shè)備中,通常都是使用一個(gè)叫"Superuser"(簡(jiǎn)稱(chēng)SU)的應(yīng)用程序來(lái)向許可的程序授以Root權(quán)限。

  Bootloader的解鎖(Unlock)

  利用數(shù)字簽名,Bootloader可以限定只有正確簽名的系統(tǒng)可以被引導(dǎo)。在修改固件以獲得Root以前,解鎖Bootloader通常是必須的。安裝第三方修改、編譯的固件也需要解鎖Bootloader。

  基帶(Radio)解鎖

  在Android系統(tǒng)中,基帶是上層軟件與手機(jī)中無(wú)線設(shè)備(手機(jī)網(wǎng)絡(luò),Wi-Fi,藍(lán)牙等)的驅(qū)動(dòng)程序之間的中介。國(guó)外的網(wǎng)絡(luò)運(yùn)營(yíng)商很喜歡鎖定基帶,從而保證用戶只能使用運(yùn)營(yíng)商自己指定的sim卡。在我國(guó),鎖定基帶是非法的,手機(jī)制造商、網(wǎng)絡(luò)運(yùn)營(yíng)商也不可以通過(guò)鎖定基帶的方法對(duì)待違約客戶。iOS的"解鎖"就是解鎖iOS中的基帶軟件。

  為什么要控制Android權(quán)限

  魚(yú)和熊掌不可兼得,Android的世界有很多自由,壞人也能自由地做壞事。它的生態(tài)系統(tǒng)很強(qiáng)調(diào)自主:用戶可以自主地減小風(fēng)險(xiǎn),僅使用官方市場(chǎng)的應(yīng)用程序,也可以自主地解除安全限制,從而獲得更多自由。因此,在遇到壞事的時(shí)候,用戶也不得不自主一下:

  1, 抵制不道德,乃至非法行為

  幾乎所有的Android安全軟件都能對(duì)來(lái)電、信息進(jìn)行控制,以減少騷擾。

  另一方面,很多應(yīng)用都會(huì)要求它們實(shí)際功能以外的權(quán)限,表現(xiàn)在非(主動(dòng))告知地搜集設(shè)備序列號(hào),位置信息,誘使用戶默認(rèn)地上傳聯(lián)系人列表等方面。

  更壞一點(diǎn)的應(yīng)用程序,則會(huì)踏入犯罪的范疇,比如能偷偷發(fā)出扣費(fèi)信息,或是作為黑客的偷窺工具。

  2, 減少惡意軟件的損害

  惡意軟件即便潛伏成功,也難以獲得權(quán)限,從而減少損失。

  3, 用戶有權(quán)自主地在抑制應(yīng)用程序的部分權(quán)限時(shí),繼續(xù)使用該應(yīng)用程序,而只承擔(dān)由于自行設(shè)置不當(dāng)而帶來(lái)的后果。

  用戶擁有設(shè)備的所有權(quán),因此有權(quán)自主控制設(shè)備上的內(nèi)容、傳感器等對(duì)象的訪問(wèn);同時(shí)有權(quán)(不)運(yùn)行,(不)編譯設(shè)備上的應(yīng)用程序。

  大多數(shù)應(yīng)用程序在運(yùn)行時(shí),并未達(dá)成主動(dòng)告知的義務(wù),是失誤;然而即使主動(dòng)告知,用戶還是可以不理會(huì)。

  為什么Android官方市場(chǎng)的強(qiáng)制提醒權(quán)限的行為不屬于主動(dòng)告知:

  通過(guò)Android官方市場(chǎng),"打包安裝器"安裝應(yīng)用程序時(shí),所顯示的"權(quán)限"僅是在安裝包內(nèi)AndroidManifest.xml聲明的值,而非應(yīng)用程序?qū)嶋H上會(huì)調(diào)用的內(nèi)容。該值僅用來(lái)表明Android系統(tǒng)能向應(yīng)用授予的最大可能的權(quán)限。即便一個(gè)"Hello World"式的應(yīng)用程序,也可以在AndroidManifest.xml中聲明所有可能的Android Permission。

  這就是說(shuō),在AndroidManifest.xml中聲明的值與應(yīng)用程序?qū)嶋H調(diào)用的權(quán)限有關(guān)聯(lián),但不等同,且這種提示是由Android系統(tǒng)負(fù)責(zé)實(shí)施的強(qiáng)制行為。

  正確的理解是:"應(yīng)用程序(被迫地)讓Android系統(tǒng)告知用戶,它在AndroidManifest.xml中所聲明的事項(xiàng)。"

  這意味著應(yīng)用程序在使用重要權(quán)限前,依然需要自行、主動(dòng)地通知用戶相關(guān)事宜。

圖6  應(yīng)用程序須要AndroidManifest.xml中聲明調(diào)用到的權(quán)限

  然而,即便只是讓一半的應(yīng)用程序達(dá)到以上的標(biāo)準(zhǔn),也是不可能的。應(yīng)用程序需要通過(guò)收集用戶信息,程序的錯(cuò)誤日志。從而統(tǒng)計(jì)用戶的喜好,改進(jìn)程序。另一方面,這也是發(fā)送精確廣告但不追溯到用戶身份信息的方式,這一點(diǎn)對(duì)于免費(fèi)應(yīng)用而言,是極其重要的。我們之所以能知道不同型號(hào)手機(jī)的占有率,應(yīng)用軟件的流行度,是與這樣的統(tǒng)計(jì)不可分離的。

  一旦每個(gè)應(yīng)用程序都專(zhuān)業(yè)地主動(dòng)發(fā)出提醒,不專(zhuān)業(yè)的用戶(大多數(shù)用戶都是不專(zhuān)業(yè)的)通常會(huì)將之視為如同海嘯警報(bào)一般的危機(jī)。

  這么做對(duì)誰(shuí)都沒(méi)有好處------用戶方的隱私權(quán)是毋庸置疑的,然而應(yīng)用程序方面的獲取信息記錄的需求也是無(wú)可阻擋的。如果每個(gè)用戶都打算阻止,只會(huì)落得被迫接受不平等條約的下場(chǎng),在溫飽以前,不會(huì)有人考慮小康的問(wèn)題。

  于是,現(xiàn)狀就變得有趣:用戶人享受著相同的服務(wù);其中大部分用戶出于不知情/好意,默默地向開(kāi)發(fā)者、廣告商提供了信息,剩下的少數(shù)用戶則能阻斷這種勞務(wù)。而作為維持Android平臺(tái)的信息商人Google,只確保在它的地盤(pán)里,不會(huì)發(fā)生觸碰底線的事情。

  一句話總結(jié):

  設(shè)備是我的,不管你怎么說(shuō),反正我說(shuō)了算,但我說(shuō)的話大多是不算數(shù)的。    

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

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

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

  它是一個(gè)需要付費(fèi)的Android應(yīng)用,其原理是修改應(yīng)用程序的apk安裝包,刪除其中AndroidManifest.xml文件內(nèi),用于聲明權(quán)限的對(duì)應(yīng)"Android.Permission.*"條目,然后再用一個(gè)公開(kāi)的證書(shū)對(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)整過(guò)的應(yīng)用。除了該應(yīng)用數(shù)字簽名外,用戶可以隨時(shí)通過(guò)執(zhí)行同樣的流程,將吊銷(xiāo)的權(quán)限恢復(fù)。

圖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)用作者的公鑰證書(shū)與應(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āo)任意一項(xiàng)Android權(quán)限。

  問(wèn)題:

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

  2,執(zhí)行權(quán)限吊銷(xiāo)的應(yīng)用的數(shù)字簽名會(huì)被更改,無(wú)法直接更新。對(duì)于那些設(shè)計(jì)不良(沒(méi)有意料到'不聲明權(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)的問(wèn)題。

  5,需要開(kāi)啟"未知源"。

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

  CyanogenMod 7.1(及以上版本)

  Cyanogenmod是一款著名的第三方編寫(xiě)的開(kāi)源Android ROM。

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

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

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

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

  問(wèn)題:

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

  Permission Denied

  這是可以吊銷(xiāo)任意Android應(yīng)用(注意,不當(dāng)?shù)氐蹁N(xiāo)系統(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)限吊銷(xiāo),但沒(méi)有像Cyanogen Mod那樣放置接口,因此需要重啟后才能應(yīng)用權(quán)限配置。同樣也有系統(tǒng)出面拒絕權(quán)限而導(dǎo)致的崩潰現(xiàn)象。

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

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

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

  問(wèn)題:

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

  PDroid

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

圖10 PDroid的界面

  為了避免Cyanogen Mod 7.1+權(quán)限吊銷(xiāo)(Permission revoking)導(dǎo)致的崩潰問(wèn)題,以及后臺(tái)服務(wù)(如LBE,QQ手機(jī)管家等,PDroid的作者認(rèn)為通過(guò)后臺(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)自帶瀏覽器的歷史,書(shū)簽(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ǔ)丁。開(kāi)發(fā)者除了提供了幾個(gè)特定機(jī)型下Cyanogen Mod,HTC Sense修改版ROM的專(zhuān)用補(bǔ)丁外,還推出了一個(gè)補(bǔ)丁生成工具(PDroid Patcher),用戶可以給自己的ROM生成專(zhuān)用的內(nèi)核補(bǔ)丁。使用該P(yáng)atcher需要安裝JDK(java Development Kit)。

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

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

  問(wèn)題:

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

  LBE安全大師

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

圖11 LBE安全大師

  LBE是國(guó)內(nèi)一個(gè)叫"LBE安全小組"開(kāi)發(fā)的工具,支持Android2.0~4.0。它的核心功能是像殺毒軟件一般,通過(guò)一個(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ā)送短信(具體原理不明,同樣類(lèi)似于禁止這五個(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)聽(tīng)  (android.permission.PROCESS_OUTGOING_CALLS)

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

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

  LBE提供兩個(gè)版本,一個(gè)叫"LBE安全大師",是一個(gè)全面的手機(jī)管家類(lèi)應(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)品。

  問(wèn)題:

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

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

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

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

  為了全面支持后臺(tái)服務(wù),也為了適應(yīng)移動(dòng)設(shè)備資源緊張,不得不經(jīng)常清理內(nèi)存的問(wèn)題,應(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)用,通過(guò)它,用戶能了解系統(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)行修改 

  5  其他

  Root帶來(lái)的風(fēng)險(xiǎn)

  有一個(gè)鉆牛角尖的說(shuō)法認(rèn)為,一旦對(duì)設(shè)備進(jìn)行了Root,便無(wú)安全一說(shuō),只要惡意程序一旦偷偷獲得Root級(jí)別,一切都是空談。

  這種說(shuō)法之所以鉆牛角尖,是因?yàn)椋阂环矫鍭ndroid中的Root權(quán)限通常都是需要用戶通過(guò)Superuser應(yīng)用進(jìn)行授權(quán)的,這已經(jīng)夠用,雖然不能指望Superuser無(wú)懈可擊;另一方面,控制Android權(quán)限主要是為了讓?xiě)?yīng)用程序在"灰色地帶"的行為收斂一些,它們實(shí)際顯然不是病毒等犯罪軟件。

  著作權(quán)的問(wèn)題 (作者不是法律方面的專(zhuān)家,以下言論僅供參考)

  我們知道,Android中的應(yīng)用程序是基于Java語(yǔ)言編寫(xiě)的。而為了達(dá)到跨平臺(tái)的目的,Java軟件是以字節(jié)碼(或叫中間代碼,bytecode),而非計(jì)算機(jī)能直接執(zhí)行的機(jī)器碼(Machine Code,有時(shí)也叫作Binary)的形式存在。因此執(zhí)行Java軟件時(shí),需要一個(gè)Java虛擬機(jī)(Android系統(tǒng)中的Java虛擬機(jī)就是Dalvik)負(fù)責(zé)解釋運(yùn)行,有的時(shí)候,虛擬機(jī)還會(huì)通過(guò)即時(shí)編譯(JIT)的方法將字節(jié)碼編譯為機(jī)器碼后再運(yùn)行,以提高程序的執(zhí)行效率。

  這就出現(xiàn)一個(gè)很有趣的現(xiàn)象:

  除非另行規(guī)定,作為設(shè)備的擁有者,用戶總是可以自行決定如何使用軟件,能自行決定程序能否訪問(wèn)用戶自己的計(jì)算機(jī)(移動(dòng)設(shè)備亦然)里面的各個(gè)內(nèi)容、對(duì)象。

  由此衍生出,在需要對(duì)代碼編譯、解釋的場(chǎng)合,用戶也能通過(guò)對(duì)編譯器(解釋器)的干預(yù),來(lái)影響代碼的執(zhí)行效果。在Android中,用戶還可以在Dalvik解釋、編譯的時(shí)候動(dòng)手。

  這是因?yàn)?,著作?quán)僅保護(hù)了軟件代碼不受到非授權(quán)的反向工程,未授權(quán)傳播等侵犯。另一方面,對(duì)于Android上的Java,網(wǎng)頁(yè)中的javascript程序,賦予用戶解釋、編譯的權(quán)利是程序能執(zhí)行的先決條件;同時(shí),軟件發(fā)行者發(fā)通常也會(huì)主動(dòng)提出放棄這種權(quán)利(表現(xiàn)為'軟件按原樣提供'、'不對(duì)使用軟件造成的后果負(fù)責(zé)'等條目)

  在編譯、解釋的過(guò)程中,需要通過(guò)匯編(Assemble),連接(Link)等方法將編譯好的對(duì)象(Object)、方法(Function)聯(lián)系起來(lái)。默認(rèn)情況下,這些行為是由原始的代碼(源代碼、中間代碼)與編譯器(解釋器)決定的,但是用戶可以通過(guò)制約編譯器(解釋器)的設(shè)置,從而影響到最終代碼。這么做是沒(méi)有問(wèn)題的。

  還有一種,應(yīng)用程序在安裝后,會(huì)在系統(tǒng)中產(chǎn)生一些緩存,或注冊(cè)一些信息。當(dāng)其中的內(nèi)容有關(guān)用戶數(shù)據(jù)時(shí),讀取或修改它們也是沒(méi)有問(wèn)題的。這就是所謂"只要是你的東西總是你的";也是Cyanogen Mod、Permission Denied不會(huì)涉及版權(quán)問(wèn)題的原因所在。

   總之,一個(gè)Android應(yīng)用之所以能運(yùn)行的前提是:

  1,首先,用戶允許使用這個(gè)應(yīng)用

  這也可以理解成:用戶安裝了應(yīng)用(以及因此設(shè)定的后臺(tái)對(duì)象),購(gòu)買(mǎi)了預(yù)裝應(yīng)用的手機(jī)。這一點(diǎn)即不影響應(yīng)用程序的主動(dòng)通知義務(wù),也不影響用戶事后的干預(yù)。

  2,接下來(lái),用戶允許Dalvik對(duì)該應(yīng)用使用"解釋","JIT"的方法,從而該應(yīng)用程序得以執(zhí)行。

  3,用戶隨時(shí)可以對(duì)該應(yīng)用作出任意不違反版權(quán)的干預(yù)。

  所以,在沒(méi)有另行規(guī)定的前提下,用戶總是可以自行決定,通過(guò)給應(yīng)用程序分配自定義的權(quán)限;或是在應(yīng)用程序調(diào)取內(nèi)容,對(duì)象時(shí)予以阻斷。同時(shí),用戶也需要自行承擔(dān)因不當(dāng)操作產(chǎn)生的后果。    

  附錄:

  1、 數(shù)字簽名

  數(shù)字簽名是一種使用了公鑰加密領(lǐng)域的技術(shù)實(shí)現(xiàn),用于鑒別數(shù)字信息的方法。一套數(shù)字簽名通常定義兩種互補(bǔ)的運(yùn)算,一個(gè)用于簽名,另一個(gè)用于驗(yàn)證。數(shù)字簽名可以輕易地驗(yàn)證完整性(正確性),合法簽署的數(shù)字簽名具有不可否認(rèn)性。 (摘錄自維基百科"數(shù)字簽名"條目,有修改)

  2、 版權(quán)聲明

  文章中引用的圖標(biāo),圖片或圖片的部分,以及部分文字的引用,僅出于合理使用的目的,可能是持有人版權(quán)所有的。

  3、 一些行為的說(shuō)明

  不道德行為

  應(yīng)用程序在啟動(dòng)時(shí),或在主動(dòng)告知以前,試圖索取、收集電話號(hào)碼、郵箱地址、位置信息等與個(gè)人身份直接關(guān)聯(lián)的內(nèi)容。如果是與個(gè)人關(guān)聯(lián),但不能直接聯(lián)系到個(gè)人信息的IMEI等設(shè)備、SIM卡的串號(hào),則稍微好一些。

  附圖1,不道德的應(yīng)用程序在啟動(dòng)的第一時(shí)間就試圖獲取隱私信息

(新浪微博2.8),無(wú)論用戶是否綁定了手機(jī),應(yīng)用都會(huì)第一時(shí)間記錄當(dāng)前手機(jī)的號(hào)碼

(UC瀏覽器,快拍二維碼),應(yīng)用總是會(huì)不主動(dòng)通知地記錄設(shè)備的位置信息

  沒(méi)有實(shí)行主動(dòng)通知的例子

附圖2 這個(gè)應(yīng)用程序在第一次啟動(dòng)時(shí)便開(kāi)始收集位置信息,用戶需要切換六次屏幕才能看到有關(guān)位置信息的提示。這項(xiàng)提示還有意忽略應(yīng)用程序本身就會(huì)記錄用戶位置信息,即便用戶并不使用需要位置信息的服務(wù)

  主動(dòng)通知的例子

附圖3 主動(dòng)通知就是在第一屏的醒目處,或用醒目的對(duì)比色等強(qiáng)調(diào)方式進(jìn)行通告

  來(lái)源:fcerebel投稿。
 
  除非注明,月光博客文章均為原創(chuàng),轉(zhuǎn)載請(qǐng)以鏈接形式標(biāo)明本文地址

  本文地址:http://www.williamlong.info/archives/2993.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
五種控制Android應(yīng)用的權(quán)限的方法
自由也需量力而行 獲取Root權(quán)限之后必須注意的安全事項(xiàng)
315曝光手機(jī)軟件黑幕 三招教你清理手機(jī)"內(nèi)鬼"
什么是安卓手機(jī)ROOT?史上最全安卓系統(tǒng)ROOT攻略
獲取最高權(quán)限 Root后能力暴漲的應(yīng)用推薦
安卓手機(jī)不root和咸魚(yú)有什么區(qū)別?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服