當前位置:
首頁 > 新聞 > 如何正確地在Android手機上安裝國產軟體?

如何正確地在Android手機上安裝國產軟體?


國產軟體往往會申請與之功能不符的許可權,讀取著用戶手機信息,開機後就駐足系統,這些對於注重隱私的用戶來說都是問題。如何「乾淨」地安裝國產流氓軟體呢?筆者整理了一些思路供大家探討。

國產app的全家桶問題一直被大家詬病,一個應用啟動後就會「喚醒」其「家族」內的其他應用,有時還會通過其他方式確保應用始終在後台運行;與此同時,很多應用還會申請與之功能完全不符的許可權,這些嚴重破壞了Android系統的體驗。

要獲得一個純凈的體驗,我們需要解決的是兩種問題,首先是軟體自啟動、駐足後台、頻繁喚醒;其次是應用對手機信息的讀取。

對應這兩個問題,我們要尋找各種解決方案,而手機本身的環境也是我們需要考慮的因素。筆者將「環境「分為三類:已安裝Xposed框架、已root、未root,三種環境下解決問題的難度也各不相同。


Xposed

Xposed簡單來說是一個框架,它可以不修改APK的情況下改變系統和應用程序的行為,所有的更改都在內存中。

如果你安裝了Xposed,問題就變得簡單了,得益於其強大的可定製性,Xposed中有大量應用軟體能夠滿足你的需求。

綠色守護(Greenify)的Xposed模式可以阻止應用在後台運行並且禁止鏈式喚醒,最近新加入的「處方」模式還可以屏蔽軟體廣播。

Android平台的應用程序分為七個優先順序:前台進程、可見進程、主要服務、次要服務、後台進程、內容供應節點、空進程。

第6級別就是一些動作標記,程序設定了遇到什麼節點時將採取什麼動作,比如:插入耳機線,就是一個「內容供應節點」,收音機程序遇到這個「節點」就會激活並自啟,變成後台進程了。

要想收音機不會因此啟動,有兩個辦法,要麼屏蔽這個節點,使你無論是否插入耳機線,都不產生這個節點的信號,要麼我們凍結收音機程序,讓他感受不到這個節點。一些無良的應用,動不動就自己在後台啟動了,就是這個道理。

綠色守護能將一個程序綠化,就是使其感受不到「指定的」「內容供應節點」,從而當發生這些「節點」時,程序不會自動啟動,除非用戶自己讓它啟動(用戶的點擊程序圖標也是一個「內容供應節點」)。

想要更直接地阻止應用後台運行,也可以使用「阻止運行」和「黑域」。

除了綠色守護,為了保障你的隱私,你還應該安裝Xprivacy,這款軟體可以設置軟體讀取隱私信息的許可權。對於某些「流氓」應用強制用戶開啟許可權的情況,Xprivacy還可以偽造隨機信息從而保障隱私。

原理也是利用Xposed框架能夠修改內存信息的方法修改軟體獲取到的信息。

Root

Android平台本來有類似iOS推送服務APNS的GCM(Google Cloud Messaging),但由於眾所周知的原因,這項服務在國內非常不穩定,於是各大廠商就紛紛推出自己的推送服務。

而利用這些推送服務,往往一個app開啟後就會其他應用都可能關聯啟動,尤其以百度、阿里、騰訊為甚。這也就是前面所說的「全家桶」。

如果你Root了手機,寫輪眼(My Android Tools)可以說是一款神器,它能夠禁用activity、service、receiver、provider,其中的Service就包括軟體用來接收推送的服務。因此,寫輪眼(My Android Tools)可以阻止軟體喚醒。

除此之外由於能夠禁用activity、service,它能做的還不止這些,經過合理配置,寫輪眼能夠幫你屏蔽廣告,優化軟體。

對於那些不常用的軟體,可以使用「凍結」類應用將他們禁用。「冰箱」就是其中的代表。

它的原理非常簡單,adb中提供了一個adb shell pm disable命令,在root許可權下可以直接用來凍結app,而冰箱基本可以理解為使用了adb shell pm disable命令。不過它提供了非常方便的launcher,讓你能夠快速地啟動凍結app。

保護隱私方面,對於已經Root的手機,可以使用AppOps應用控制應用許可權。

很多國產ROM甚至系統原生ROM都有許可權控制,但首先,這些許可權往往不完整;其次,AppOps能將許可權設置為ignore,很多國產軟體會強制用戶開啟部分許可權,設置ignore後,應用會得到數據,但數據為空,從而繞過這些許可權申請。

比如如果我們直接拒絕微信使用電話許可權,就無法正常進入微信,而用AppOps將許可權設為忽略就可以順利進入。

左圖為 通過系統許可權管理拒絕微信讀取設備ID,右圖為 通過AppOps忽略微信讀取設備ID請求


未Root

未Root手機其實本文的重點。筆者自從去年入手了S7 edge後就一直糾結於是否Root。Root後永久無法使用Samsung Pay,更可怕的是還會導致前置攝像頭黑屏、系統卡頓發熱等各種問題。可是又無法忍受各種流氓軟體在手機里搗亂,因此一直在尋找方案。

對於TouchWiz系統,我們可以利用KNOX Standard SDK的機制凍結應用(包括系統應用),常見的利用這一機制的軟體包括「空調狗」、「凍住」,它們都可以做到應用使用後立即凍結,從根源拒絕「關聯啟動」等流氓行為,只可惜這一機制只針對三星系列手機。

隱私方面,可以通過AppOps將部分許可權設置為ignore。實際上AppOps在Android 4.4.2之前是集成在系統中的,4.4.2之後,Google不知處於何種想法將其從系統中移除了,系統自身沒有許可權進行管理。

上文中所使用的AppOps是以root為前提的。如果手機沒有root,只有兩種相對比較麻煩的方法,兩種方法都需要電腦端操作。

一是通過電腦端adb進行設置:


adb shell appops set 包名 許可權名稱 ignore


其中許可權名稱包括:


READ_CONTACTS 讀取聯繫人

POST_NOTIFICATION 通知

CALL_PHONE 撥打電話

READ_SMS 讀取簡訊

WRITE_SMS 寫入簡訊

RECEIVE_SMS 接收簡訊

OP_READ_PHONE_STATE 讀取設備ID(包括IMEI)

FINE_LOCATION 定位許可權

COARSE_LOCATION 定位許可權

VIBRATE 震動

CAMERA 攝像頭

WRITE_CLIPBOARD 寫入剪切板

READ_EXTERNAL_STORAGE 讀取外部存儲空間

WRITE_EXTERNAL_STORAGE寫入外部存儲空間

BOOT_COMPLETED 開機時啟動

GET_ACCOUNTS 獲取設備賬號信息

第二種方法是使用App Ops手機端軟體,在免root模式下,App Ops使用遠程adb進行許可權控制,而遠程adb仍然需要在電腦端開啟:adb tcpip 5555,將埠號5555輸入App Ops即可使用。但需要注意的是,重啟後需要重新開啟遠程adb。

然而,想要完全將流氓軟體隔離開來,我們要用到類似「沙盒」的機制。

好在Android自從5.0以後就加入了Android for Work功能,功能的初衷是為了讓大家在工作時能夠使用自己的私人設備。

通過Android for Work,我們可以建立「個人」和「工作」兩套檔案,工作檔案由企業的IT管理員管理,為了安全起見,在兩套方案中的應用無法互相訪問,應用數據存儲的區域其實也是不一樣的,Island中的/data目錄、內置存儲空間、通話記錄、聯繫人、日曆等數據是與原用戶獨立的。

利用這種思路,我們也可以將這套機制用來對付流氓應用,將應用安裝到工作檔案後,它就無法獲取到個人檔案的應用和數據。

Island就是利用Android for Work將流氓應用隔離在「島」上的應用,這款軟體與綠色守護出自同一作者,通過上述方式來實現類似沙盒的效果。

除了沙盒,Island還自帶了凍結應用的功能。然而,使用了Island中自帶的凍結功能後再次解凍時,該應用的AppOps狀態就會被恢復到初始狀態(也就是允許所有許可權)需要重新設置許可權。

如上文所說,進行AppOps設置的兩種方法都需要用到電腦,因此凍結後再解凍軟體需要重新設置許可權的成本較高。

接下來我們就在沙盒環境內解決喚醒和隱私的問題。

喚醒問題我們可以通過在Island中安裝綠色守護來解決。儘管是在非root環境下,它依然能夠強制關閉程序(原理是通過Android輔助功能模擬點擊「強制停止」程序)。

建議開啟「嗜睡模式」,它能夠部分禁止應用的後台行為,該模式利用的是Android 6.0引入的Doze Mode。

在睡眠狀態下,系統將停止一些軟體運行,例如一些非即時通訊軟體的後台就會在鎖屏的狀態下被Android清理掉。從而達到節省電量、延長續航時間的作用。綠色守護中的「嗜睡模式」會將進入Doze Mode的時間縮短,從而進一步節省電量。

而隱私問題則可以通過在沙盒中安裝App Ops來控制,或者同樣地,可以通過電腦端adb操作,但需要注意的是由於沙盒實際上是在Android中使用了多用戶,因此需要在參數中指定用戶:


adb shell pm list usersadb shell appops get com.eg.android.AlipayGphone --user XX


除了上述方案,筆者最近還發現了一款名叫「容器」的應用。

與Island的思路完全不同,該應用利用的是VirtualApp和文件夾重定向。VirtualApp會在你的App內創建一個虛擬空間,你可以在虛擬空間內任意的安裝、啟動和卸載APK,這一切都與外部隔離,如同一個沙盒。

目前「容器」尚在開發中,但按照作者的說法,今後會加入隱私、許可權的控制和應對流氓行為的功能。


總結

要想解決流氓app的喚醒和隱私讀取問題,Xposed平台和Root後的手機上有各種簡單的方案,包括Greenify與XPrivacy,而非root環境下則相對困難,我們可以使用Island創造Android for Work環境,我們可以把這環境看作沙盒,將應用安裝在沙盒內,應用的啟動問題則通過Android 6.0後引入的Doze Mode來解決。

想這麼多方法來安裝國產App,一方面是為了設備保持流暢的狀態,不至於被各種喚醒的應用長期佔據內存和耗電,另外也考慮到隱私問題。折騰安裝國產應用,實際上是無奈之舉,也希望國內的Android生態能夠良性發展。


*本文作者:JohnChu,轉載請註明來自FreeBuf(FreeBuf.COM)


您的贊是小編持續努力的最大動力,動動手指贊一下吧!


本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

低成本玩轉硬體安全(一) | BadUSB on Arduino
淺談拒絕服務攻擊的原理與防禦(3)| 反射DDOS攻擊利用代碼
下一個獵殺目標 | 近期大量MySQL資料庫遭勒索攻擊
scapy在wlan中的應用
卡巴斯基頂級安全專家叛國罪後續 | 7年前的案子,為何現在才提起?

TAG:FreeBuf |

您可能感興趣

不裝軟體能在 Windows 電腦顯示 Android 手機屏幕嗎?
WireX Botnet惡意軟體 攻擊安卓手機
Android 史上最複雜的惡意軟體,就算手機沒 Root 也會幫你 Root
Google將推出Android安全認證 將預裝官方殺毒軟體
如何用手機軟體Snapseed調出復古范兒?
GooglePlay正在與Android廣告軟體進行艱苦鬥爭
Android廣告軟體的新趨勢:濫用Android插件框架
在Linux安裝GoogleTensorFlow神經網路軟體
QakBot銀行惡意軟體導致大量 Active Directory 被鎖定
CIA Angelfire:專門感染Windows的惡意軟體框架
Android軟體調侃iPhone X「M型劉海」,安卓秒變「劉海屏」
施耐德電氣公司的U.motion Builder軟體曝出未修復安全漏洞
蘋果iPhone7需要安裝殺毒軟體嗎
「made in China」最強背鍋,勒索軟體FakeCry「各種冒牌」有何目的?
ExpensiveWall:「包裝」惡意軟體現身 Google Play,危及用戶財產安全
微軟宣布Windows Store應用商店將上線完整版Office軟體
直指電網:比Stuxnet更具威脅的基建設施惡意軟體Industroyer
惡意軟體就在Docker容器中?
比爾蓋茨換用Android手機,上面裝了很多微軟軟體