Textobot-VSCode環境部署並運行第一個TB插件

導讀

0x00.交個朋友

0x01.安裝textobot-editor.vsix

0x02.配置詳解

0x03.命令詳解

0x04.模板項目格式

0x05.運行第一個TB插件

0x06.下篇再見

0x07.定製服務

0x08.關於劉柏江


0x00.交個朋友

手遊從業者模擬器玩家請關注雲遊模擬器PantaWin;

Android開發者請關注雲遊模擬器
PantaWin/PantaMac/PantaLinux;

iOS越獄開發者請關注曉文框架Textobot;

Android插件開發者請關注飛度框架Fridobot;

移動調試器重度用戶請關注利達調試器LidaDbg;

我們的產品推薦使用git下載和更新,在碼雲搜索geekneo即可。


0x01.安裝textobot-editor.vsix

前置申明,下文TBROOT是指本產品的根目錄,VSCode是指微軟旗下的跨平臺代碼編輯器Visual Studio Code。

Textobot腳本插件的主力開發語言是Python和JavaScript,輔助開發語言是C++/Objective-C。在眾多的代碼編輯器中,我們最終選擇了VSCode,因為它開源、易用、強大、可擴展。針對Textobot插件開發、部署等使用場景,我們定製了一個VSCode插件textobot-editor.vsix擴展。目前測試過兼容性的平臺包括macOS、Windows,安裝方式是使用VSCode的Install From VSIX功能,如下圖:

Textobot-VSCode環境部署並運行第一個TB插件

安裝完成之後,打開OUTPUT輸出窗口,右上角切換至Textobot輸出模式就可以看到textobot-editor的輸出日誌了,如下圖:

Textobot-VSCode環境部署並運行第一個TB插件

0x02.配置詳解

完成TB編輯器的安裝之後,為了和運行在iPhone上的Textobot後臺服務通信,我們需要配置一些參數。當前一共有四個配置參數如下圖:

Textobot-VSCode環境部署並運行第一個TB插件

  • Ip:這是必須設置的參數,填入目標iPhone與本機所在的局域網IPv4地址,填好這個參數TB編輯器才可以與iPhone上的Textobot後臺服務通過HTTP協議通信;
  • Iplist:這是可選參數,填入一個IPv4地址列表文本文件全路徑(格式為一行一個IPv4地址),這個在需要同時控制多臺iPhone時使用;
  • Log:這是可選參數,在想查看通過JavaScript調用Textobot導出的日誌函數輸出內容時使用,這個路徑必須是TB_logpath函數返回的值,後續在開發TB插件的文章中我們再詳細介紹;
  • Target:這是可選參數,填入iPhone目標進程的名字或者BundleID,在開發JavaScript代碼時使用,這個參數是提供給Frida注入JavaScript代碼時使用的。


0x03.命令詳解

當完成目標iPhone的IPv4地址設置之後,我們就可以通過Textobot Editor提供的命令與Textobot手機服務通信了。通過Command Palette打開插件命令搜索界面,然後輸入Textobot:

Textobot-VSCode環境部署並運行第一個TB插件


這裡就把所有TB編輯器導出的命令羅列出來了,我們逐一解釋它的功能:

  • Install:選擇.tb文件安裝至手機,.tb就是TB插件,由Pack命令打包而來,本質上就是zip文件改了後綴名;
  • Pack:將當前TB項目打包成.tb插件,執行該命令時當前打開的文檔必須是TB項目根目錄的文檔,否則打包出來的.tb文件格式無效無法安裝;
  • List:列出當前安裝在手機的TB插件,輸出的內容是格式化後的json,對應的key就是每一個插件的package名字,有些命令比如Start就需要輸入插件包名;
  • Log:獲取當前Python-print/JavaScript-console.log輸出的日誌內容;
  • LogReset:清空所有日誌,一般在開發插件時使用;
  • Start:啟動TB插件,需要填入插件的package名字,由List命令返回;
  • Stop:停止TB插件,需要填入插件的package名字,由List命令返回;
  • Uninstall:卸載TB插件,需要填入插件的package名字,由List命令返回,卸載之前必須先執行Stop命令停止否則將會卸載失敗;
  • AppLog:獲取當前配置項Log指向的文件內容;
  • TextFile:獲取iPhone手機上的文本文件內容;
  • Enable:啟用TB插件,需要填入插件的package名字,由List命令返回;
  • Disable:禁用TB插件,需要填入插件的package名字,由List命令返回,禁用之後將無法Start;
  • Run:將VSCode當前打開的.py/.js文件代碼發送至手機端執行,一般是在開發時使用,下一篇文章詳細解釋;


0x04.模板項目格式

Textobot-VSCode環境部署並運行第一個TB插件

TBROOT/Template是一個完整的模版項目,一般情況下新的插件只需要拷貝它修改配置和腳本代碼就可以了。一個有效的TB插件項目必須包含兩個文件:__init__.py以及textobot.json,其他文件比如dylib、js等酌情處理。
__init__.py就是標準的Python模塊文件,當安裝至手機端,Textobot後臺服務就是按照Python模塊的方式引入插件代碼的。如果這個文件不存在,也就不符合Python模塊的定義,所以也無法加載插件。
textobot.json是本插件的描述信息,用於指明要收到哪些進程的事件、插件包名、描述、作者等元數據,後續文章我們再詳細解釋它的字段。
textobot.js是可選的,文件名字也是可以任意指定的,它是在需要注入特定進程執行JavaScript代碼時才需要。瞭解Frida的朋友應該比較清楚,它就是給Frida的script對象使用的。後續文章我們再詳細說明如何使用。


0x05.運行第一個TB插件

瞭解完模板項目格式,我們演示一個TBROOT/Sample目錄下面的一個例子插件。為了有直觀的可視化效果,我們選擇了AppleIDLogin這個插件。這個插件大致意思就是獲取Preferences文本事件、解析文本事件、點擊設定的文本、登錄硬編碼的無效AppleID賬號,然後一直重複下去。通過Install命令選擇


TBROOT/Sample/AppleIDLogin.tb插件,安裝好之後,在手機端用管理器啟動它。

播放

暫停

進入全屏

退出全屏

00:00

00:00

重播

刷新

試試


0x06.下篇再見

至此,我們就完成了Textobot插件體系手機端、桌面端的安裝部署,也演示了一個可視化的AppleID賬號登錄樣例插件。下一篇文章開始,我們進入TB插件開發模式,從最簡單的Hello World代碼開始,編寫我們的TB插件。


0x07.定製服務

我們團隊雖小,但個個都是一頂三的技術精英,因此技術能力是嚴重過剩的。所以如果您有任何關於iOS/Android底層的疑難雜症、雲遊模擬器掛機/二次開發、曉文/飛度插件定製等方面的個性化需求,歡迎通過私信聯繫我們。


0x08.關於劉柏江

8年移動互聯網從業經驗、精通iOS/Android底層開發/攻防對抗、GikDbg/KiwiVM原作者、幾維安全聯合創始人/股東。

我的自媒體賬號將圍繞PantaEmu、Textobot、Fridobot、LidaDbg為用戶朋友們傳道、授業、解惑。歡迎各位朋友關注、點贊、轉發,謝謝大家。


分享到:


相關文章: