跳转至

Android 關鍵代碼定位

AndroidManifest.xml文件

  • 軟件包名
  • apk主活動,隱藏程序沒有主Activity

Application在 java層啓動最早,

順序分析

最常見也是最有用的方法就是,我們順着程序的邏輯依次查看程序的代碼來進行分析,但是當程序代碼量特別大時候,這一方法的效率就比較低下,需要其他方法來輔助。

字符串定位法

所謂字符串定位法就是通過在程序程序運行過程中出現的字符串來定位相應的函數。字符串有可能被直接硬編碼在程序中,也有可能通過字符串id來索引。這一方法故去使用比較方便,但現在的話,有可能字符串會被分開或者說首先被加密,在運行的過程中被動態解密。

我們可能關注的字符串可能有

  • 程序報錯信息
  • 服務
  • 廣播

敏感API定位

所謂敏感API定位法,意思就是我們根據程序的執行行爲來判斷程序可能調用了哪些函數。這一方法需要我們對於Android中的API比較熟悉。一般來說,我們可能會關注以下方面

  • 控件的事件函數
    • onclick
    • show
    • Toast
  • 網絡函數
    • HttpGet
    • HttpPost
    • HttpUriRequest
    • socket
  • 發送短信
  • 打電話
  • 定位
  • 等等

log信息

所謂log信息就是Android程序在運行時輸出的字符串信息,這部分信息不會在我們的界面上體現,因而我們需要使用其它輔助工具來分析,比如說,我們可以使用ddms來輔助分析。對於log信息來說,我們可以從兩個方面考慮

  • 利用程序本身產生的log信息
  • 自己對代碼反編譯,插入log信息,並重打包來進行分析。

棧跟蹤

我們可以用ddms提供的方法調用鏈的信息來判斷程序目前的調用關係如何。

鉤子

  • xposed
  • cydia

monitor

  • 運行log,程序運行產生的,系統運行產生的
  • 線程跟蹤
  • 方法調用鏈

動態調試