导读
0x00.交个朋友
0x01.常规的GUI事件模型
0x02.TB插件的GUI事件模型
0x03.配置文件中的target
0x04.TB_on_event事件回调
0x05.TB_gui显示与解析
0x06.下篇再见
0x07.定制服务
0x08.关于刘柏江
0x00.交个朋友
手游从业者模拟器玩家请关注云游模拟器PantaWin;
Android开发者请关注云游模拟器PantaWin/PantaMac/PantaLinux;
iOS越狱开发者请关注晓文框架Textobot;
Android插件开发者请关注飞度框架Fridobot;
移动调试器重度用户请关注利达调试器LidaDbg;
我们的产品推荐使用git下载和更新,在码云搜索geekneo即可。
0x01.常规的GUI事件模型
在有GUI的操作系统上面,系统都定义了一组非常细致的GUI事件交给应用程序处理。如果是非常高层的SDK封装,使用更是方便,通过重载函数就可以处理GUI事件了。比如iOS的UIEvent、Qt的QEvent、Windows的PeekMessage等相关接口或者虚函数就可以实时处理GUI事件。下图是iOS的部分事件接口:
![803901514ecff6116202e5476826ba02.png](https://i-blog.csdnimg.cn/blog_migrate/5db2e914ebf502af41a75aedf36a0837.jpeg)
这类操作系统级GUI事件模型几乎都是针对编译型开发语言设计的,功能非常完备但是使用复杂。尤其是我们用动态语言封装出来的运行时,要全部处理这些事件非常费劲同时也是没有必要的。
0x02.TB插件的GUI事件模型
TB插件事务型流程推荐使用Python编写,功能型流程推荐使用JavaScript编写。这就要求我们封装的GUI事件模型是平台无关的,并且简单易懂,即便是没有iOS SDK开发经验的人也可以使用。如果用Python处理起来异常困难的话就失去了我们标榜的高效率开发iOS越狱插件的意义了。
编译型语言比如C/C++/Objective-C擅长处理二进制数据结构,解释型语言比如Python非常擅长处理文本型数据结构。从这个角度出发,我们就分配了一个关键任务给注入库textobot.dylib-记录界面文本以及坐标