Textobot-换个轻松高效的方式开发iOS越狱插件
2020-01-03 19:55:34 Author: bbs.pediy.com(查看原文) 阅读量:391 收藏

[原创]Textobot-换个轻松高效的方式开发iOS越狱插件

3天前 402

[原创]Textobot-换个轻松高效的方式开发iOS越狱插件

许愿:要是段老师的看雪平台能导入头条或者公众号的文章就好了。

导读

0x00.交个朋友

0x01.越狱开发

0x02.Cydia插件体系

0x03.Cydia插件开发

0x04.Textobot插件体系

0x05.Textobot插件开发

0x06.下篇再见

0x00.交个朋友

手游从业者模拟器玩家请关注云游模拟器PantaWin;

Linux重度用户请关注云游模拟器PantaLinux;

iOS越狱开发者请关注晓文框架Textobot;

Android插件开发者请关注飞度框架Fridobot;

移动调试器重度用户请关注利达调试器LidaDbg;

我们的产品下载方式推荐使用git: 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插件开发

  • 基于动态脚本语言的插件体系设计完成并产品化之后,我们开发插件的模式就彻底改变了,下图是一个模版项目:


  1. textobot.json: 插件配置文件,申明要处理的App对象等信息,必须存在;
  2. textobot.js: 可以通过Frida发送到目标App执行的JavaScript脚本,可选;
  3. __init__.py:Python模块文件,每一个插件都是按照Python模块引入的,必须存在;
  • 系统级事务我们可以在__init__.py中去实现,进程级事务我们可以在textobot.js中去实现。由于Frida、Pyobjus这样的项目已经把脚本对Native的调用封装得很完善了,因此我们几乎不需要写C/C++/Objective-C代码就可以实现和deb插件一样的功能。开发完成之后,通过VSCode将项目打包生成.tb插件即可安装至手机,然后使用Textobot越狱版App管理.tb插件。


  • 至此,我们拥有了以动态脚本语言为核心的插件体系,需求的变化只需要反应到简单明了的Python/JavaScript代码上,这比需要重新编译、连接、打包的deb插件模式着实快了不少。

0x06.下篇再见

  • 本篇文章我们把Cydia插件、Textobot插件的基础信息做了一个剖析,让用户朋友有一个全局的理解和认识。下一篇文章,我们将从零开始上手Textobot开发iOS越狱插件。

[2020元旦礼物]《看雪论坛精华17》发布!(补齐之前所有遗漏版本)!

最后于 2天前 被GeekNeo编辑 ,原因: 图片挂了。


文章来源: https://bbs.pediy.com/thread-256992.htm
如有侵权请联系:admin#unsafe.sh