AndBug-android調試工具

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咱們是不知道的,以下圖所示,


https://lh5.googleusercontent.com/-_rjUilMMjwc/TqkxzgQF47I/AAAAAAAAAIc/bF_dVXzW5-0/s224/image002.jpg

如今咱們的任務是要找出這個URL是什麼(固然,對於這個簡單的例子,咱們經過抓包或者靜態反編譯都能解決這個問題)。

咱們將經過AndBug來完成這個工做。

1.  首先在模擬器中啓動apk,在命令行下輸入 adb shell ps,找到相應的進程pid,在這個例子中pid是243


https://lh4.googleusercontent.com/-KJuCj42v8uc/Tqkx14xfQSI/AAAAAAAAAIg/8bRl0wvlydQ/s500/image004.jpg


2.  進入AndBug目錄,輸入PYTHONPATH=lib ./andbug  shell  –p  243,不出意外的話就能attach上目標進程了


https://lh3.googleusercontent.com/-qrpR0WPuakQ/Tqk0SM65mEI/AAAAAAAAAI4/c3nqrS38rHc/h120/image006.jpg

3.  咱們能夠在命令行中輸入各類命令,輸入」help」能夠看到全部可用的命令,經常使用的命令有:

classes:  查看加載的class
Break:   下斷點
suspend: 暫停進程
resume: 恢復進程運行

4. 咱們應該在哪下斷點呢?不要急,咱們先看看這個apk用到了那些網絡相關的類吧,輸入:

classes    java.net


https://lh6.googleusercontent.com/-tyhFvPsigqY/Tqkx2XMH5mI/AAAAAAAAAIk/G17y6j1_-Ws/s342/image008.jpg

出現了一堆相關class,咱們看到裏面有java.net.URL,通常咱們訪問網絡資源時,一般都會新建一個URL類,在這個類上下斷點應該是合理的

5.  在java.net.URL類上下斷點,輸入
break java.net.URL


https://lh6.googleusercontent.com/-IDA3WL4Hzhk/Tqk1V8QlbjI/AAAAAAAAAJE/64bAkx0c_90/h120/image010.jpg

這條命令會對URL類中的全部方法下斷點,若是隻想斷其中某一個方法,能夠在參數後面加上方法名

6.  下面就是觸發斷點了,回到app界面,單擊」get url」按鈕


https://lh4.googleusercontent.com/-duBFSy5uBmE/Tqkx3JtGzuI/AAAAAAAAAIo/J1RPzyXDVPc/s624/image012.jpg

呵呵,斷下來了! 看看堆棧,應該是在URL的init函數處斷了下來
而後啓動navi server,輸入navi,能夠看到server地址http://localhost:8080


https://lh3.googleusercontent.com/-r2Sjx1uC_fk/Tqk2ErajPzI/AAAAAAAAAJQ/IQFTXdRXsbk/h120/image014.jpg




7.  使用瀏覽器訪問http://localhost:8080,神奇的一幕發生了,咱們能夠觀察到當前線程的狀態以及類成員變量,固然也包括咱們關心的URL!


https://lh5.googleusercontent.com/-7u1QiQrTMrg/Tqkx3xsMBjI/AAAAAAAAAIs/Kj5j0n5Rvxg/s624/image016.jpg

以上只是一個簡單的功能,咱們徹底能夠經過添加本身的腳本,將AndBug打形成一個android逆向的利器! java

相關文章
相關標籤/搜索