使用 Frida

FIRERPA 內建了最新版本的 Frida,讓您不必自行啟動 frida-server。我們內建的 Frida 已整合各種開放原始碼的隱藏補丁,以及我們額外加入的多種隱蔽功能,您不需擔心 Frida 被偵測的問題。倘若我們內建的 Frida 仍被偵測到,代表您所能下載到的絕大多數 frida-server 也同樣無法逃脫被偵測的命運。

注意

從 9.0 版本起,內建的 Frida 17.x 需要您自行將 frida-java-bridge 打包進腳本中,否則會出現 Java not defined 相關的錯誤,此變更源自 Frida 官方的調整。依照官方變更說明,您需要新建 Node.js 專案並引入 frida-java-bridge,詳細請參考:https://github.com/oleavr/frida-agent-example ,或者使用我們提供的 frida_script_generate.py 對 js 腳本進行打包。

透過程式碼使用

透過 d.frida 即可取得已連線至 frida-server 的實例,不需要自行使用 frida 函式庫建立連線。

conn = d.frida
conn.enumerate_processes()

當然,如果想了解它的底層實作,您也可以參考下列程式碼。

# 取得動態 token
token = d._get_session_token()

manager = frida.get_device_manager()
conn = manager.add_remote_device("192.168.0.2:65000", token=token)
conn.enumerate_processes()

透過命令列使用

如果您需要使用 frida 命令列,強烈建議您透過 遠端桌面 來執行 fridafrida-tracefrida-ps 等相關指令,因為在這個環境中,您無需任何額外操作,直接執行 frida 即可,不需提供任何連線參數,例如 -U-H 等,內建環境都已預先設定妥當。

Frida

如果您閱讀到這裡,說明您仍希望在電腦端使用該指令。此時,您需要根據服務的安裝/執行情況整理一些必要資訊。如果您使用了服務憑證,您需要準備好該憑證檔案,同時也需要目標設備的 IP 位址以及 FIRERPA 服務埠(預設為 65000)。請注意,這個埠口並非 Frida 的 27042 埠。

其次,您需要先使用 API 取得當前的 token,此 token 為固定 16 位字串,例如 czvpyqg82dk0xrnj。我們知道這種方式可能有些繁瑣,但您的設備安全更為重要。

token = d._get_session_token()
print(token)

現在,您從上面接口得到了一個 token,我們假設它是 czvpyqg82dk0xrnj,接下來開始撰寫 Frida 指令。對於所有 Frida 官方命令列工具,預設只需加上參數 -H 192.168.0.2:65000 以及 --token xxxxxxxxxxxxxxxx 即可,例如下方所示。

frida -H 192.168.0.2:65000 -f com.android.settings --token xxxxxxxxxxxxxxxx

如果您的 FIRERPA 服務端啟動時還使用了服務憑證,指令中還必須加上 --certificate 參數。

frida -H 192.168.0.2:65000 -f com.android.settings --certificate /path/to/lamda.pem --token xxxxxxxxxxxxxxxx

您可能已經發現,差異主要有下列幾點:-U 變為 -H(因為我們透過網路連線而非 USB),並增加了 --token 參數;如果服務端啟用了服務憑證,那麼還會多出 --certificate 參數,這是為了確保您設備的安全性,避免未經授權的人存取。

透過命令列使用(objection)

對於其他工具(如 objection),通常也會提供上述參數,但大部分非官方工具並未完整添加這些參數。目前我們僅針對 objection 進行修補,不會影響原有使用方式,但由於 objection 已長期未更新,因此未向上游推送。您可以自行下載我們提供的 objection-1.11.0-command-patch.diff,並將此補丁套用到您已安裝的 objection 程式碼目錄(可透過 pip3 show objection 指令查知安裝路徑)。

此後,您可以透過下列方式來使用,可以看到僅僅是多了一個 --token 參數。

objection -N -h 192.168.0.2 -p 65000 --token xxxxxxxxxxxxxxxx explore

或者,如果服務端啟動時使用了服務憑證,指令中也要同樣加上 --certificate

objection -N -h 192.168.0.2 -p 65000 --certificate /path/to/lamda.pem --token xxxxxxxxxxxxxxxx explore

暴露應用介面

本章節已遷移至 Frida 匯出介面 章節。