【Android 逆向】Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )
文章目錄
- 一、Android 逆向方法
- 1、靜態逆向解析
- 2、函數調用分析
- 3、動態運行跟蹤
- 4、運行日志分析
- 5、文件格式解析
- 6、敏感信息分析
- 7、網絡信息監控
- 8、軟件動態調試
- 9、環境偽裝模擬
一、Android 逆向方法
1、靜態逆向解析
靜態逆向解析 : 靜態解析 APK 安裝文件 , 反編譯 APK 文件 , 然后反匯編 Dex 字節碼文件 , SO 動態庫文件 ; 分析這些二進制文件細節 ;
2、函數調用分析
函數調用分析 : 研究應用中調用了哪些函數 , 如 : 資源或目錄中某些文件被加密了 , 需要解密操作 , 嘗試分析 Java / OpenSSL 等的加密解密 API 方法 , 攔截這些方法 , 獲取相應的秘鑰 ; 獲取到秘鑰后 , 可以自己實現一個算法 , 將加密文件還原成原始數據 ;
3、動態運行跟蹤
動態運行跟蹤 : 將程序運行起來 , 運行中動態分析數據 ; 如 : 做一些函數攔截 , 攔截 Java 的字符串 String 的 構造函數 或 追加函數 , 按照時間順序 , 記錄函數的結果 , 然后找到關鍵信息的拼接過程 , 如 : 訪問網絡時 , 必然拼接 URL 地址 , 這些都是字符串 , 比較容易分析 ;
4、運行日志分析
運行日志分析 : 針對一個幾百兆的大型的程序 , 一般不會上來就進行靜態分析 , 很難接近應用的核心部分 ; 這種情況下 , 優先監控這個應用的運行日志 , 執行應用相關操作 , 查看哪些操作會產生哪些日志 , 之后根據日志信息 , 定位對應的代碼位置 , 然后進行 靜態 / 動態分析 ;
5、文件格式解析
文件格式解析 : 解析編譯后的 SO 等格式的文件 , 提取重要的信息 , 如解析 SO 動態庫 , 提取其中的 jni 入口方法 , 然后到 Dex 字節碼文件中查詢對應的 jni 方法調用 ;
有時候可以獲取代碼中的以明文形式聲明的 密碼 , 秘鑰 , 字符串 相關信息 ; 解析 SO 動態庫中的所有字符串信息 , 通過觀察特征 , 位數 , 可以知道哪些字符串可能是秘鑰字符串 , IP 地址 , URL 地址 , 域名 等 ;
6、敏感信息分析
敏感信息分析 : 分析 敏感的 函數名 , 類名 , 字符串 , 文件名 ;
7、網絡信息監控
網絡信息監控 : 針對有網絡功能的應用 , 應用需要與服務器進行交互 , 如果網絡交互沒有進行防護措施 , 如使用 HTTP 鏈接 , 或 未加密數據 等 , 很容易被截獲明文數據 , 這些數據都需要進行二次加密 ;
網絡游戲 , 如果被截獲了數據 , 后果是災難性的 , 外掛就做出來了 ;
8、軟件動態調試
軟件動態調試 : 在調試環境中 , 調試軟件 , 可以設置斷點 ; 通過修改寄存器跳過調試檢測 ;
9、環境偽裝模擬
環境偽裝模擬 : 使用 PC 電腦機上運行 Android 系統 , 應用為了避免在 PC 上運行 , 刪除了 x86 架構的 so 動態庫 ;
使用 雷電模擬器 等 模擬器 , 可以在 PC 電腦上運行 ARM 庫 , 只是運行速度慢一些 ;
總結
以上是生活随笔為你收集整理的【Android 逆向】Android 逆向方法 ( 静态逆向解析 | 函数调用分析 | 动态运行跟踪 | 运行日志分析 | 文件格式解析 | 敏感信息分析 | 网络信息监控 | 环境伪装模拟 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 插件化】现有的针对插件
- 下一篇: 【Android 逆向】Android