-
-
-
[原创]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插件开发
-
基于动态脚本语言的插件体系设计完成并产品化之后,我们开发插件的模式就彻底改变了,下图是一个模版项目:
-
textobot.json: 插件配置文件,申明要处理的App对象等信息,必须存在;
- textobot.js: 可以通过Frida发送到目标App执行的JavaScript脚本,可选;
- __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