這次我們將介紹 Android Hook 概述,以 Xposed 框架(Framework)為例,並實作 System Clock 的修改!在此提醒,此份文件僅共學術研究,後果請自行負責(逃~。 XD
◆ Hook 介紹
Hook 英文單字為鉤子,其概念也如同鉤子一樣,意旨利用鉤子把 Android 系統內額外想要處理的流程資訊勾出來(Hook)並於修改後放回原處。 在 Android 中可將滲透測試分為兩種類別:靜態與動態。常見的靜態分析是經過反編譯 APK 後,透過分析程式碼來理解整個 APP 運作流程並找尋是否有程式漏洞或人見人愛的Hard Code;動態則是在 APP 執行中,經由封包解析、Log 監看和 Hook 技術等方法來蒐集、監聽、試著竄改傳輸時的資料。◆ Hook 介紹
可以監聽 APP 與系統的通訊內容、也能竄改內部傳遞的相關資料,若想要透過Hook技術進行滲透測試,需要知道想監聽的服務和方法為何,再透過程式碼撰寫出Hook的行為。
◆ Zygote 介紹
Zygote 是 Android 的核心之一,由 init.rc 文件所建立的服務。其設計目的是為了降低系統記憶體與處理時間,透過共享的概念,讓新孵化出的程序不需要重新裝載一次資源。所有的系統服務(system server)以及APP(com.xxx.xxx….)都會經由 Zygote 孵化出來,舉例來說,當 ActivityManagerService 需要啟動一個新的服務,會通過 Socket 與 Zygote 進行溝通,以請求 Zygote fork 一個新的程序出來。而這個 fork 的行為,就會執行/system/bin/app_process,並產生出一個新的 app_process, app_process 就可以啟動一個新的服務了。
◆ Xposed 簡介