Textobot-換個輕鬆高效的方式開發iOS越獄插件

劉柏江 發佈 2019-12-31T07:30:29+00:00

0x02.Cydia插件體系目前,我們越獄後從Cydia安裝的各種插件,均為deb插件,它是從「DebianPackager 」繼承過來的包管理機制。

導讀

0x00.交個朋友

0x01.越獄開發

0x02.Cydia插件體系

0x03.Cydia插件開發

0x04.Textobot插件體系

0x05.Textobot插件開發

0x06.定製服務

0x07.關於劉柏江


0x00.交個朋友

手游從業者模擬器玩家請關注云游模擬器PantaWin;

Linux重度用戶請關注云游模擬器PantaLinux;

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

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

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

我們的產品下載地址:

https://gitee.com/geekneo/


0x01.越獄開發

  • 隨著蘋果體系的逐步完善和開放,越獄開發已經變得越來越小眾。尤其是現在已經沒辦法實現完美越獄,即便是checkm8這樣的頂級漏洞也只能是非完美越獄。這為我們越獄後的使用帶來了很多不方便。再加上前段時間Cydia作者宣布關閉越獄市場,各方對越獄的前途是一片不看好。
  • 但是,世界人民是如此的聰明以至於總是有需要越獄環境的業務存在,所以越獄開發還是一如既往的永遠被需要。至於要不要搞這個領域,應該取決於你的職業規劃,而不是Cydia作者不幹了。


0x02.Cydia插件體系

  • 目前,我們越獄後從Cydia安裝的各種插件,均為deb插件,它是從「Debian Packager 」繼承過來的包管理機制。命令行安裝方法是使用dpkg工具,這和其他Linux發行版差不多。
  • deb插件由dpkg-deb打包而來,一個普通的插件打包之前文件布局如下:

我們提前開發好相應的組件,然後按照dpkg-deb規定的格式組織文件目錄就可以了。

  • deb插件可以包含App、Tools、Tweak等內容,這些內容一般是由iOS SDK開發而來,大部分都是使用Objective-C開發完成。


0x03.Cydia插件開發

  • 使用最廣泛的deb插件開發框架是theos,它基於makefile定製了一系列的模版項目,針對不同的項目類型選擇對應的模版即可。
  • 作為資深越獄開發者,我還是覺得theos不好用,所以我一般使用Xcode+SelfLink的模式開發插件。大致流程是使用Xcode將插件代碼編譯成.o文件,然後自己寫一個連接和打包命令生成最終的deb文件。這樣可以充分利用Xcode這個最好用的IDE提高代碼編寫的效率。
  • 即便如此,我依然覺得不好用,開發效率太低。尤其是遇到需求頻繁變動,需要無數次修改實現邏輯的時候。這其實也是靜態編譯型語言的通病,一點點修改就要重新編譯、連接、打包等連鎖操作。


0x04.Textobot插件體系

  • 在被C/C++/Objective-C折磨了6年之後,同時Frida也愈發完善,我終於下定決心重新定義iOS越獄開發的模式,徹底告別用靜態編譯型語言開發帶來的弊端。
  • Frida自帶JavaScript執行引擎,並且對Native的調用封裝得非常完美,這是一個不錯的起點。由於Frida是以進程為單位的插件體系,有些需要跨進程處理的事務並不能很好的解決,所以我們還需要一個系統級別的體系,這樣才算完整。對於使用了2年多的Python,我是喜歡得不得了,方便好用強大,因此選定它作為Frida的補充。
  • 這樣一來,以Python為系統級別、JavaScript為進程級別的插件基礎體系就確定下來了。我們還缺的就是一個調度管理中心和開發IDE。
  • 調度管理中心就是我們的Textobot.deb插件,它集成了完整的Frida和Python,並添加了一些實用的API。開發IDE選擇了如日中天的Visual Studio Code,在微軟的大力支持下,這個IDE非常好用,對各種語言的代碼編寫都很友好。

0x05.Textobot插件開發

  • 基於動態腳本語言的插件體系設計完成並產品化之後,我們開發插件的模式就徹底改變了,下圖是一個模版項目:
textobot.json: 插件配置文件,申明要處理的App對象等信息,必須存在;
  • 系統級事務我們可以在__init__.py中去實現,進程級事務我們可以在textobot.js中去實現。由於Frida、Pyobjus這樣的項目已經把腳本對Native的調用封裝得很完善了,因此我們幾乎不需要寫C/C++/Objective-C代碼就可以實現和deb插件一樣的功能。開發完成之後,通過VSCode將項目打包生成.tb插件即可安裝至手機,然後使用Textobot越獄版App管理.tb插件。
  • 至此,我們擁有了以動態腳本語言為核心的插件體系,需求的變化只需要反應到簡單明了的Python/JavaScript代碼上,這比需要重新編譯、連接、打包的deb插件模式著實快了不少。
  • 本篇文章我們把Cydia插件、Textobot插件的基礎信息做了一個剖析,讓用戶朋友有一個全局的理解和認識。下一篇文章,我們將從零開始上手Textobot開發iOS越獄插件。


0x06.定製服務

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


0x07.關於劉柏江

  • 8年移動網際網路從業經驗、精通iOS/Android底層開發/攻防對抗、GikDbg/KiwiVM原作者、幾維安全聯合創始人/股東。
  • 我的自媒體帳號將圍繞PantaEmu、Textobot、Fridobot、LidaDbg為用戶朋友們傳道、授業、解惑。歡迎各位朋友關注、點讚、轉發,謝謝大家。
關鍵字: