导读
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功能,如下图:
安装完成之后,打开OUTPUT输出窗口,右上角切换至Textobot输出模式就可以看到textobot-editor的输出日志了,如下图:
0x02.配置详解
完成TB编辑器的安装之后,为了和运行在iPhone上的Textobot后台服务通信,我们需要配置一些参数。当前一共有四个配置参数如下图:
- 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:
这里就把所有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.模板项目格式
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为用户朋友们传道、授业、解惑。欢迎各位朋友关注、点赞、转发,谢谢大家。