動態

詳情 返回 返回

SegmentFault 思否技術週刊 Vol.74 — 淺談 Android 進階指北 - 動態 詳情

本期技術週刊一起了解 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 請求的時候拿到請求數據。不過,這也可能導致一些安全問題,所以對於我們通常的處理方式是,對於線上運行的包,需要防止這些抓包手段。>

問答推薦

  • Android 11 應用進入後台後前台服務裏面的 Socket 被掛起?
  • 在和前端進行前後交互時出現的問題?
  • 安卓開發,獲取文件路徑變成數字?
  • Android native 層 mediaplayer 源碼修改,如何進行打樁測試?
  • 為什麼實際大小和顯示的大小相差那麼多?
  • 前端安卓 app 開發,用什麼技術棧比較好呢?
  • Android 重複文件如何區分?
  • Androidviewmodel 有一個 App 參數,異常 has no zero argument constructor?
  • android linearlayout 設置高度無效?

# SegmentFault 技術週刊 #

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

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

如有問題可以添加小姐姐微信~

image.png

user avatar limingxin 頭像 howiecong 頭像 gaoxingdeqincai 頭像 lingleidejiandao 頭像 hole 頭像 hunterxiong 頭像
點贊 6 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.