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
同样手机端启动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
android hooking generate simple com.google.android.apps.chrome.compositor.Invalidator
但是这只是生成了一个简单的框架,对于参数却没有填上去,需要我们自己添加;
android hooking watch class com.google.android.apps.chrome.C
hromeBrowserProvider
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"
memory dump from_base 0xcd20bd72 6666 /home/cc-sir/deskto
p/xx.dex
frida配合objection使用可以很好提高我们的分析效率.