簡介
objection是基於Frida的一個工具,可以方面我們直接找出apk中的需要HOOK的方法,還可以答應函數的參數,返回值以及棧調用等等,是我們在寫Frida腳本的一個不錯的輔助工具;
安裝
因爲Frida的安裝通常需要Python3.7及以上,所以這裏objection也使用Python3.7進行安裝;
如果運氣好的話直接使用pip就可以安裝:
sudo pip3.7 install objection
如果有一些報錯的話,需要安裝依賴再重新編譯安裝Python3.7,比如:
報錯一:
ModuleNotFoundError: No module named '_sqlite3'
這個報錯直接運行:
sudo apt-get install libsqlite3-dev zlib zlib-devel
報錯二:
ModuleNotFoundError: No module named '_lzma'
下載xz源碼:
https://sourceforge.net/projects/lzmautils/files/xz-5.2.5.tar.gz/download
編譯安裝:
./configure
make -j8
sudo make install
下載python3.7源碼:
wget https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tar.xz
編譯安裝:
./configure --prefix=/usr/local/python3.7
make -j8
sudo make install
根據需要建立軟連接:
ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python3.7
ln -s /usr/local/python3.7/bin/pip3.7 /usr/bin/pip3.7
安裝好之後重新執行:
sudo pip3.7 install objection
成功安裝objection後效果:
使用
同樣手機端啓動frida-server,然後用objection附加上我們需要調試的apk包:
這裏我們的包名爲com.android.chrome
objection -g com.android.chrome explore
提取內存信息
memory list modules
這裏如果輸出太多的話,我們還可以使用--json
參數將數據導入文件中;
知道有那些庫之後,我們可以獲取其中庫的導出函數:
memory list exports liblog.so
列出內存中所有的類
android hooking list classes
輸出的結果很多,可以通過添加要查找的關鍵字進行過濾:
android hooking search classes chrome
列出內存中所有的方法
同樣我們可以列出內存中所有的方法:
android hooking search methods chrome
但是需要花費的時間比較長:
列出類的所有方法
我們還可以列出某一個類中的所有方法:
android hooking list class_methods com.google.android.apps.chrome.compositor.Invalidator
直接生成hook代碼
android hooking generate simple com.google.android.apps.chrome.compositor.Invalidator
但是這只是生成了一個簡單的框架,對於參數卻沒有填上去,需要我們自己添加;
hook類的所有方法
android hooking watch class com.google.android.apps.chrome.C
hromeBrowserProvider
可以通過點擊程序觸發相應的方法;
hook方法的參數、返回值和調用棧
android hooking watch class_method com.google.android.apps.c
hrome.ChromeBrowserProvider.hasWriteAccess --dump-args --dump-backtrace --dump-return
事件刪除
通過jobs list
可以列出事件,jibs kill +job_id
可以刪除事件:
暴力搜內存
這個可以用於脫殼,搜索文件頭:
memory search "64 65 78 0a 30"
還可以將其dump下來:
memory dump from_base 0xcd20bd72 6666 /home/cc-sir/deskto
p/xx.dex
總結
frida配合objection使用可以很好提高我們的分析效率.