SegmentFault 思否技術週刊 Vol.74 — 淺談 Android 進階指北

Beverly發表於2022-12-20

本期技術週刊一起了解 Android,歡迎大家閱讀 ~

核心知識進階

Android 開發中的SSL pinning // xiangzhihong

在日常的安全滲透過程中,我們經常會遇到瓶頸無處下手,這時候如果攻擊者從 APP 進行突破,往往會有很多驚喜。但是目前市場上的APP都會為防止別人惡意盜取和惡意篡改進行一些保護措施,比如模擬器檢測、root 檢測、APK 加固、程式碼混淆、程式碼反除錯、反脫殼、簽名校驗等等對抗機制。而測試人員對APP進行滲透的首步操作通常就是上 burp 或者 Charles 這類抓包工具進行抓包,檢視請求記錄裡的域名及連結地址是否可以進一步利用。

我們都知道 http 協議傳輸的是明文資訊,是可以直接捕獲的,從而造成了資料洩露。為了防止中間人的攔截,出現了 HTTPS 加密機制。在 HTTPS 中,使用了證書+數字簽名解決了抓包的問題,這裡用到了兩個概念:數字簽名和數字證書。

TheRouter 的跨模組依賴注入實現原理 // 張濤

TheRouter 用於跨模組通訊設計的 ServiceProvider,核心設計思想是參考了 SOA (面向服務架構)的設計方式。

具體到 Android 側就是 AIDL 類似的實現。

模組化能力支援項:

支援跨模組依賴注入
支援自定義注入項的建立規則,依賴注入可自定義引數
支援自定義服務攔截,單模組 mock 除錯
支援注入物件快取,多次注入 只會 new 一次物件

Android 平臺上 ABI 的確認 // 戈壁老王

ABI 即 Application binary interface,是 CPU 與指令集專屬的應用程式二進位制介面。它定義了一套規則,允許編譯好的二進位制目的碼能在所有相容該ABI的作業系統中無需改動就能執行。不同的 Android 裝置使用不同的 CPU,而不同的 CPU 支援不同的指令集。

ABI 包含以下資訊:

可使用的 CPU 指令集(和擴充套件指令集)。
執行時記憶體儲存和載入的位元組順序。Android 始終是 little-endian。
在應用和系統之間傳遞資料的規範(包括對齊限制),以及系統呼叫函式時如何使用堆疊和暫存器。
可執行二進位制檔案(例如程式和共享庫)的格式,以及它們支援的內容型別。Android 始終使用 ELF。
如何重整 C++ 名稱。

最全的 Android 之 Dialog // 浪漫主義碼農

Android 系統提供的對話方塊父類為 Dialog, 裡面並沒有實現對話方塊的具體型別,比如單選、多選、列表等對話方塊,僅提供一個框架和規範。系統為開發者提供了一個 多功能的對話方塊類 AlertDialog, 封裝了各種對話方塊的樣式,我們只需要完成要顯示的內容和監聽。

大部分對話方塊就是使用系統封裝好的對話方塊 AlertDialog 的例項物件。AlertDialog 並不提供對外的構造方法,即不能直接透過 AlertDialog 的建構函式來生產一個AlertDialog。因為 AlertDialog 所有的構造方法都是 protected 的。所以為了獲取 AlertDialog 物件,系統提供了一個靜態內部類 Builder 讓我們使用,透過 Builder 可以建立 AlertDialog 物件。

應用與實踐

淺談 App 的啟動最佳化 // xuexiangjys

在Android中,應用啟動一般可分為三種:冷啟動、溫啟動、熱啟動。

那麼什麼是冷啟動、溫啟動和熱啟動呢?下面我們來簡單看一下它們的定義:

  • 冷啟動:當啟動應用時,後臺沒有該應用的程式。這時系統會又一次建立一個新的程式分配給該應用,這個啟動方式就是冷啟動。
  • 溫啟動:當啟動應用時,後臺已有該應用的程式,但是Activity可能因為記憶體不足被回收。這樣系統會從已有的程式中來啟動這個Activity,這個啟動方式叫溫啟動。
  • 熱啟動:當啟動應用時,後臺已有該應用的程式,且Activity仍然存在記憶體中沒有被回收。這樣系統直接把這個Activity拉到前臺即可,這個啟動方式叫熱啟動。

由於冷啟動相對於其他啟動方式多了程式的建立(Zygote程式fork建立程式)以及應用的資源載入和初始化(Application的建立及初始化),所以相對來說會比較耗時,所以我們一般說的App啟動最佳化一般指的都是App的冷啟動最佳化。

Android App 如何防止抓包 // xiangzhihong

在軟體開發中,常用的抓包方式有 Charles 、 Fiddler和Burp,它們透過在手機網路中新增代理的方式,然後安裝信任證書,接著就可以在 App 請求的時候拿到請求資料。不過,這也可能導致一些安全問題,所以對於我們通常的處理方式是,對於線上執行的包,需要防止這些抓包手段。>

問答推薦


# SegmentFault 技術週刊 #

「技術週刊」是社群特別推出的技術內容系列,一週一主題。

每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。

如有問題可以新增小姐姐微信~

image.png

相關文章