天天看點

【Android 逆向】Android 逆向用途 | Android 逆向原理

文章目錄

  • ​​一、Android 逆向用途​​
  • ​​二、Android 逆向原理​​

一、Android 逆向用途

​Android 逆向用途 :​

  • ​軟體防護 :​ 根據逆向的方法針對性的開發防護政策 ;
  • ​算法研究 :​ 在沒有源碼的前提下 , 通過反編譯 , 反彙編 , 拿到 Smali 代碼 , 研究其産品的算法 , 實作途徑 ;
  • ​接口分析 :​ 接入一個沒有源碼的第三方庫 , 無法進行調試 , 出現問題後 , 可以使用逆向的方法 , 查找問題原因 , 解決相關問題 ; 找到問題後 , 修改彙編代碼 , 然後重新打包 ;
  • ​資料采集 :​ 分析應用的資料 , 擷取該應用的更新内容 , 營運資訊 , 在 APP 中可以拿到一些非公開的資料 ;
  • ​應用破解 :​ 單機遊戲玩家需求 , 遊戲修改器 , 或者應用停止營運 , 沒有付費管道 , 可以進行破解使用 ;
  • ​調試分析 :​ 應用打包 , 混淆 , 加強 後上傳到應用市場 , 如果某個分發管道版本出現問題 , 可能就需要調試分析具體的這個 APK 包的問題 ; 結合源碼與管道包進行逆向分析, 查找問題原因 ;

二、Android 逆向原理

​Android 逆向原理 :​

  • ​靜态分析 :​ 反編譯 , 反彙編 , 從 .so , .a , .dex 等函數庫中提取相應資訊 , 主要是分析靜态檔案二進制資料 ;
  • ​動态分析 :​ 将程式運作起來 , 運作中動态分析資料 ; 如 : 做一些函數攔截 , 攔截 Java 的字元串 String 的 構造函數 或 追加函數 , 按照時間順序 , 記錄函數的結果 , 然後找到關鍵資訊的拼接過程 , 如 : 通路網絡時 , 必然拼接 URL 位址 , 這些都是字元串 , 比較容易分析 ;
  • ​結合分析 ( 使用最多 ) :​ 先通過靜态分析 , 确認一些資訊 , 然後通過 動态分析 , 進一步進行調試 ;

​靜态分析 和 動态分析 , 對于簡單防護的應用 , 是有效的 ;​