Frida之內(nèi)存漫游
在前面的系列文章中對Frida相關(guān)的API進行了介紹。
Hook everything
Frida只是提供了各種API供我們調(diào)用,在此基礎(chǔ)之上可以實現(xiàn)具體的功能,比如禁用證書綁定之類的腳本,就是使用Frida的各種API來組合編寫而成。于是有大佬將各種常見、常用的功能整合進一個工具,供我們直接在命令行中使用,這個工具便是objection。
objection基本整合了常用的各種hook功能,在逆向apk、Hook代碼、查看內(nèi)存信息的時候為我們提供極大的方便。使用objection掌握常用的命令,大部分情況下是不需要寫任何代碼的。

內(nèi)存漫游
啟動objection
保證Frida server開啟 命令行輸出
? ?objection -g com.lingpao.lpcf622b explore
-
查看基本信息

-
查看內(nèi)存中加載的庫
memory list modules

-
查看庫的的導(dǎo)出函數(shù)
memory list exports libgsl.so

-
提取整個內(nèi)存
memorydumpall from_base

后續(xù)文章會對dump出的內(nèi)存做詳細(xì)的分析。
-
搜索整個內(nèi)存
memory search"88"--string--offsets-only
, 關(guān)于如何進行的搜索,在Frida API使用(2)中介紹了通過Frida進行搜索。Objection對通配符的支持不好。
Hook anywhere
列舉內(nèi)存中的所有類?
android hooking list classes

在內(nèi)存中所有已加載的類中搜索包含特定關(guān)鍵詞的類?
android hooking search classes game

內(nèi)存中搜索所有的方法?
android hooking search methods game
?

非常耗時的一個操作。
列出類的所有方法?
android hooking list class_methods com.fish.main.MainGameActivity

直接生成hook代碼?
android hooking generate simple com.fish.main.MainGameActivity
?

沒有參數(shù),需要自行添加。
hook類的所有方法?
android hooking watchclasscom.fish.main.MainGameActivity
?

當(dāng)需要調(diào)用相應(yīng)的方法的方法的時候,可以看出相應(yīng)的hook信息被打印出來。關(guān)于Activity的聲明周期在Frida API進階-文件有介紹。

hook方法的參數(shù)、返回值和調(diào)用棧?
android hooking watch class_method com.fish.main.MainGameActivity.onWindowFocusChanged--dump-args--dump-return--dump-backtrace

hook方法的所有重載?
android hooking watch class_method java.io.File.$init--dump-args

啟動Activity或者Service
查看當(dāng)前可用的Activity?
android hooking list activities
?

直接啟動activity?
android intent launch_activity com.zhihu.matisse.ui.MatisseActivity

查看可開啟的服務(wù)?
android hooking list services

開啟服務(wù)?
android intent launch_service com.cameraphotodemo.localnotificationfunction.ExtFuncUtils$DetectService
objection的缺陷
缺少對Native層的支持
對象類型的數(shù)據(jù)打印有問題,比如Byte array和Json,會顯示成[object,object]
對Spawn方式啟動的支持不夠流暢
退出
exit
抓包
Tcpdump進行抓包,具體可參見下圖,后續(xù)文章會詳細(xì)講解抓包。

通過 tcpdump-h
可以查看每一個參數(shù)的含義。
公眾號
更多Frida相關(guān)內(nèi)容,歡迎關(guān)注我的微信公眾號:無情劍客。
