Frida通過其強大的用C語言編寫的工具核心Gum提供了動態工具。由於這種工具邏輯易於更改,因此您通常希望用腳本語言編寫它,以便在開發和維護它時獲得簡短的反饋循環。 這就是GumJS發揮作用的地方。 僅需幾行C語言,您就可以在可以完全訪問Gum API的運行時中運行一段JavaScript,從而允許您掛接函數,枚舉已加載的庫,其導入和導出的函數,讀取和寫入內存,掃描內存中的模式 等
Frida提供
目錄
注入式的
嵌入式的
預裝的
Injected
在大多數情況下,您想生成一個現有程序,附加到一個正在運行的程序,或者劫持一個正在生成的程序並在其中運行您的檢測邏輯。由於這是使用Frida的常見方式,因此我們大多數文檔都着眼於此。 該功能由frida-core提供,它用作物流層(logistics layer),將GumJS打包到一個共享庫中,並注入到現有軟件中,並提供雙向通信通道,以在需要時與您的腳本對話,然後卸載。 他們。 除了此核心功能之外,frida-core還允許您枚舉已安裝的應用程序,正在運行的進程和已連接的設備。 連接的設備通常是運行frida-server的iOS和Android設備。 該組件本質上只是一個守護程序,它通過TCP公開frida-core,默認情況下在localhost:27042上偵聽。
Embedded
有時無法在注入模式下使用Frida,例如在沒有越獄(jailed )的iOS和Android系統上。 在這種情況下,我們爲您提供frida-gadget,這是一個共享庫,您應該將其嵌入要檢測的程序中。 通過簡單地加載庫,它將允許您使用現有的基於Frida的工具(例如frida-trace)與它進行遠程交互。 它還支持一種完全自主的方法,該方法可以在文件系統外運行腳本,而無需任何外部通信。
在這裏閱讀更多關於Gadget的內容
Preloaded
也許您對LD_PRELOAD或DYLD_INSERT_LIBRARIES很熟悉? 如果有JS_PRELOAD會不會很酷? 這是上一節中討論的共享庫frida-gadget在配置爲通過從文件系統加載腳本自動運行時真正有用的地方。
在這裏閱讀更多關於Gadget的內容