AndBug的主頁是:https://github.com/swdunlop/AndBug
安裝AndBug
安裝很簡單,只要兩步
1. 下載源代碼
git clone https://github.com/swdunlop/AndBug.git
2. 編譯
make
若是提示沒有頭文件,先安裝python-dev
使用AndBug
假設有這樣一個例子:
咱們有一個apk,名字叫作HttpRequest.apk,它的界面包括一個按鈕和一個文本框,當咱們單擊按鈕的時候,程序會去訪問一個固定的網頁,並將頁面的代碼顯示在文本框中,而這個網頁的URL咱們是不知道的,以下圖所示,
如今咱們的任務是要找出這個URL是什麼(固然,對於這個簡單的例子,咱們經過抓包或者靜態反編譯都能解決這個問題)。
咱們將經過AndBug來完成這個工做。
1. 首先在模擬器中啓動apk,在命令行下輸入 adb shell ps,找到相應的進程pid,在這個例子中pid是243
2. 進入AndBug目錄,輸入PYTHONPATH=lib ./andbug shell –p 243,不出意外的話就能attach上目標進程了
3. 咱們能夠在命令行中輸入各類命令,輸入」help」能夠看到全部可用的命令,經常使用的命令有:
classes: 查看加載的class
Break: 下斷點
suspend: 暫停進程
resume: 恢復進程運行
4. 咱們應該在哪下斷點呢?不要急,咱們先看看這個apk用到了那些網絡相關的類吧,輸入:
classes java.net
出現了一堆相關class,咱們看到裏面有java.net.URL,通常咱們訪問網絡資源時,一般都會新建一個URL類,在這個類上下斷點應該是合理的
5. 在java.net.URL類上下斷點,輸入
break java.net.URL
這條命令會對URL類中的全部方法下斷點,若是隻想斷其中某一個方法,能夠在參數後面加上方法名
6. 下面就是觸發斷點了,回到app界面,單擊」get url」按鈕
呵呵,斷下來了! 看看堆棧,應該是在URL的init函數處斷了下來
而後啓動navi server,輸入navi,能夠看到server地址http://localhost:8080
7. 使用瀏覽器訪問http://localhost:8080,神奇的一幕發生了,咱們能夠觀察到當前線程的狀態以及類成員變量,固然也包括咱們關心的URL!
以上只是一個簡單的功能,咱們徹底能夠經過添加本身的腳本,將AndBug打形成一個android逆向的利器! java