文章目錄
-
- 一、Android 逆向用途
- 二、Android 逆向原理
一、Android 逆向用途
Android 逆向用途 :
-
- 軟體防護 : 根據逆向的方法針對性的開發防護政策 ;
- 算法研究 : 在沒有源碼的前提下 , 通過反編譯 , 反彙編 , 拿到 Smali 代碼 , 研究其産品的算法 , 實作途徑 ;
- 接口分析 : 接入一個沒有源碼的第三方庫 , 無法進行調試 , 出現問題後 , 可以使用逆向的方法 , 查找問題原因 , 解決相關問題 ; 找到問題後 , 修改彙編代碼 , 然後重新打包 ;
- 資料采集 : 分析應用的資料 , 擷取該應用的更新内容 , 營運資訊 , 在 APP 中可以拿到一些非公開的資料 ;
- 應用破解 : 單機遊戲玩家需求 , 遊戲修改器 , 或者應用停止營運 , 沒有付費管道 , 可以進行破解使用 ;
- 調試分析 : 應用打包 , 混淆 , 加強 後上傳到應用市場 , 如果某個分發管道版本出現問題 , 可能就需要調試分析具體的這個 APK 包的問題 ; 結合源碼與管道包進行逆向分析, 查找問題原因 ;
二、Android 逆向原理
Android 逆向原理 :
-
- 靜态分析 : 反編譯 , 反彙編 , 從 .so , .a , .dex 等函數庫中提取相應資訊 , 主要是分析靜态檔案二進制資料 ;
- 動态分析 : 将程式運作起來 , 運作中動态分析資料 ; 如 : 做一些函數攔截 , 攔截 Java 的字元串 String 的 構造函數 或 追加函數 , 按照時間順序 , 記錄函數的結果 , 然後找到關鍵資訊的拼接過程 , 如 : 通路網絡時 , 必然拼接 URL 位址 , 這些都是字元串 , 比較容易分析 ;
- 結合分析 ( 使用最多 ) : 先通過靜态分析 , 确認一些資訊 , 然後通過 動态分析 , 進一步進行調試 ;
靜态分析 和 動态分析 , 對于簡單防護的應用 , 是有效的 ;