安卓應用程式滲透測試(五)
Android元件
四種元件型別中的三種:活動,服務和廣播receiver。由一個稱為Intent的非同步訊息啟用(Intent是一種系統級別的訊息傳遞機制)。
啟用元件
Intents在執行時將各個元件彼此繫結(你可以將它們視為從其他元件請求操作的信使),不管這個元件是屬於你的應用還是屬於其他應用。
廣播接收器
廣播接收器不顯示使用者介面,他們可以建立狀態列通知,在廣播事件發生時警告使用者。
另請閱讀: 程式滲透測試一" rel="nofollow,noindex">安卓應用程式滲透測試一
系統事件
應用程式可以被註冊用來接收系統事件產生的廣播,系統事件包括BOOT COMPLETE,SMS RECEIVED,BATTERY LOW等。當應用程式註冊為SMS RECEIVED事件時,它的receiver在每次收到新的SMS訊息時都將被觸發。
自定義廣播
除了系統產生的事件之外,應用程式還可以生成自定義廣播Intents,我們可以為其註冊receiver。
不過,更常見的是,廣播receiver只是其他元件的“閘道器”,它的目的是完成非常少量的工作。
例如,它可以基於該事件啟動一個服務來執行一些工作。例如,應用程式可以為電量低訊息註冊receiver,並基於該資訊改變其行為。
示例
廣播接收器“MyBroadCastReceiver”在AndroidManifest.xml檔案中註冊。廣播接收器通常以下面的格式註冊。由於receiver是匯出的,所以程式碼似乎不安全,如圖所示:
另請閱讀: 安卓應用程式滲透測試二
服務
服務是在後臺執行的元件,以執行長時間執行的操作或執行遠端程序的工作。
服務不提供使用者介面,任何元件(例如活動)都不能啟動服務並讓它執行或繫結到服務以與之互動。
例如,當用戶在使用其他應用程式時,服務可能在後臺播放音樂,或者它可能正在通過網路獲取資料而不影響使用者與活動的互動。
三種不同型別的服務
·scheduled -當一個API,比如Job Scheduler啟動一個服務時,該服務就會定時啟動。這個Job Scheduler是在Android 5.0中引入的(API level 21)。
· Started – 當應用程式元件(例如活動)呼叫start Service()時,將啟動服務。
· Bound – 當應用程式元件通過呼叫bind Service()繫結到服務時,該服務就被綁定了。
清單中的服務,聲明瞭應用程式manifest檔案中的所有服務,就像活動和其他元件一樣,如圖:
<Manifest … > … <application … > <service android: name=”.Example Service” /> … </application> </manifest>
Activity(活動)
簡單來說,一個活動代表著具有使用者介面的單個螢幕。例如,一個登陸活動和一個登陸成功後的活動。
活動的作用是使用者與應用程式互動的入口點,也是使用者在應用程式內或不同應用程式之間導航的關鍵。
另請閱讀: 安卓應用程式滲透測試三
Activity類提供了許多回調函式,這樣可以讓活動知道某個狀態的變化:例如系統正在建立,停止或恢復活動,或者破壞活動所在的程序。
Content Provider(內容提供商)
Content Provider元件根據請求將資料從一個應用程式提供給其他應用程。
你可以將資料儲存在檔案系統,Sq-Lite資料庫,Web上,或者任何其他可以持久儲存的位置,應用程式可以訪問到就行。
通過content provider,其他應用程式可以查詢甚至修改資料(如果內容提供商允許的話)。
當一個APP想要與其他APP共享資料時,Content Provider必不可少。