导读
0x00.交个朋友
0x01.TB编辑器Run命令详解
0x02.系统级Hello World
0x03.TB系统级API
0x04.进程级Hello World
0x05.TB进程级API
0x06.开发模式
0x07.插件模式
0x08.下篇再见
0x00.交个朋友
手游从业者模拟器玩家请关注云游模拟器PantaWin;
Android开发者请关注云游模拟器PantaWin/PantaMac/PantaLinux;
iOS越狱开发者请关注晓文框架Textobot;
Android插件开发者请关注飞度框架Fridobot;
移动调试器重度用户请关注利达调试器LidaDbg;
我们的产品推荐使用git下载和更新,在码云搜索geekneo即可。
0x01.TB编辑器Run命令详解
前置声明,下文中TBROOT指本产品的根目录,TB指Textobot。前两篇文章《iPhone手机环境部署及核心组件简介》、《VSCode环境部署并运行第一个TB插件》我们已经完成了iPhone手机与VSCode的环境部署,并且也配置好了目标手机的IPv4地址。现在,我们就具备了开发Python或者JavaScript代码并发送到手机执行的基础条件。
TB编辑器导出的Textobot Editor - Run命令就是帮助我们通过HTTP协议连接iPhone端Textobot后台服务的。执行这个命令的时候当前打开的文档必须以.py或者.js结尾的文件,否则将会报如下的错误:
另外,由于执行脚本代码与HTTP协议是异步进行的,所以如果我们想要查看脚本输出的日志内容,我们需要手动执行Textobot Editor - Log命令获取远程日志文件内容,如下:
小技巧:VSCode会记住当前频繁使用的插件命令,所以我们记住Command Palette的快捷键再配合上下键就可以高效率的操作TB编辑器的命令。
0x02.系统级Hello World
我们在VSCode中新建一个文件并另存为test.py,并输入如下代码:
然后执行Run命令(macOS快捷键Command+R、Windows快捷键CTRL+R),然后执行Log命令,我们就成功以root用户在系统级别执行了上述Python代码,结果如下:
这其实就和我们在桌面写Python代码一模一样了,我们不需要有任何iOS、Xcode等方面的前置知识,只需要按照一个通用Unix系统一样写Python代码就可以实现在iPhone手机上运行我们的脚本代码。
0x03.TB系统级API
为了方便我们开发插件,Textobot导出/集成了一些实用API,在此我们简单罗列一下,后面开发例子插件时再详细介绍。如果现在就想了解这些API的功能,可以查看TBROOT/Doc/textobot.md。
0x04.进程级Hello World
进程级代码执行依托于Frida,如果要写出有意义的JavaScript脚本代码,需要有iOS SDK的开发经验。不过当前我们只是输出Hello World,也是很简单的。用VSCode新建一个文件并另存为test.js,输入如下代码:
如果上述代码我们想在系统设置App里面执行,那么我们需要配置Target为设置App的名字或者BundleID,如下:
设置
com.apple.Preferences
然后Command+R或者CTRL+R执行上述代码,然后执行Log命令我们就可以得到如下的输出:
0x05.TB进程级API
TB进程级API主要是扩展Frida运行时,方便我们开发实用的插件。当前进程API是以C接口的形式导出的,这在使用时需要用Frida API转换一下,这在TBROOT/Template模版插件中已经实现了一部分,后面我们通过例子插件详细介绍,现在可以移步TBROOT/Doc/textobot.md查看功能说明:
0x06.开发模式
我们通过Run命令执行代码的模式称之为开发模式,这样不需要频繁打包、安装插件,提高开发效率。执行过Run命令也会激活手机端Textobot后台服务的开发模式,这样会全局性的收到各类App的UI事件,而不需要指定Target。
这种Hotcode模式和目前Google主推的Flutter+Dart的模式很像,都是即写即运行,大大提高开发效率。看到这里,我想朋友们应该能理解《换个轻松高效的方式开发iOS越狱插件》这篇文章想要表达的“效率”的意义了。
0x07.插件模式
我们通过Textobot Editor - Install命令安装之后再运行的模式称之为插件模式,这是我们开发完了一个插件交付给别人使用或者需要脱离VSCode运行代码时使用的模式。它遵循Textobot定义好的生命周期:
0x08.下篇再见
到此,我们就完整地介绍了Textobot环境搭建以及代码编写的所有内容。从下一篇开始,我们将由简至繁开发一些例子插件,然后在这个过程中把TB导出的API以及开发/调试技巧分享给大家,希望对朋友们有帮助。