使用Organismo-iOS-Driver获得激动人心的探索应用程序

2.通过旁路将框架注入到现有的“ ipa / app”中

绕过是一种很酷的OS X命令行工具,可将Organismo-iOS-Driver注入您可以推迟的任何.IPA或.APP中。 您不需要APP的源代码。 您只需要拥有开发者证书和移动设备。

3.在越狱设备中使用MobileSubstrate。

在越狱的世界中搜索Mobile Substrate来找乐子。

交付用于3D表示的UI

收集UI树的信息非常简单。 它包括迭代每个窗口及其子视图,并获取每个UIView的信息。

  //迭代应用程序的窗口 
for([UIApplication sharedApplication] .windows中的UIWindow *窗口)... //迭代Windows子视图
对于(UIView * window.subviews中的subView)...

检查ORGUIViewHierarchy.m中的代码。

树信息和屏幕截图可以得到与WDA相同的结果,即屏幕截图和UI树并排表示。 见下图:

但是我们现在可以在App中进行其他操作。 我们可以将UI探索带入一个真正引人注目的地方。 如果每个UI元素都将提供其渲染的图像,我们可以隔离每个元素,并且不仅在它们的X,Y平面而且还沿着Z轴渲染它们

好吧,这是一个很酷的主意,事实证明这也是可能的。 这是我们的第一个幸运步骤:UIView具有将自身绘制到图形上下文上并从中创建PNG或JPEG的功能。

  -(BOOL)drawViewHierarchy:(CGRect)rect afterScreenUpdates:(BOOL)after 

我们还没有到, drawViewHierarchy绘制视图及其所有子视图,这不是我们想要的,我们需要没有子视图的图像。 接下来的三个步骤描述了实现此目标的一种方法:

  1. 隐藏所有子视图。
 对于(UIView * subview在hiddenViews中){ 
[subview setHidden:YES];
[view setNeedsDisplay];
}

2.使用drawViewHierarchy将视图绘制到图形文本上。

3.恢复子视图的可见性。

这个把戏行之有效。 参见下面的图片。 我们掌握了每个UI元素及其可视表示形式的信息,现在我们可以进行惊人的3D UI探索。 检查ORGScreenshot.m以查看创建UIVIew图像的代码。

UI树的详细程度

尽管我已经提到收集UITree信息很简单,但事实并非如此。 使用UIKit API运行UI树可为我们提供最大程度的详细信息,这可能会过多。 让我们看看Organismo可以选择的一些细节程度的案例。

  • 私人和公共班级

除了您熟悉的UIKit类(例如UIView,UIButton)外,还有数百种API中不可用或未记录的类,这些是UIKit用于构建UI的Apple私有类。 这些私有类通常以下划线作为前缀。 在Organismo中,您可以选择是否要查看它们。

  • 可见和隐藏元素

有时可以出于多种原因隐藏UIView。 例如,某个应用程序可以在特定屏幕上具有隐藏视图,以在条件出现后将其变为可见。 这些隐藏的视图没有视觉上的表现,但是您可能希望在树中看到它们的显示,以进行很好的探索。

  • 控制子视图

UI控件的组成可能非常复杂,例如,日期选择器具有非常复杂的内部结构,通常可能不希望看到它的完整细节。 但是有时您可能会选择,因此您可以选择自己的喜好来查看控件的内部。

  • 手势和塞格斯

在特定屏幕的数百个UI元素中,只有少数几个具有用户交互响应并启动某些操作。 如果您只想研究响应式元素,则可以打开可视化标记。

  • 飞机距离和范围

UI元素之间的访问和查看通常是必需的,并且可以使用两个滑块来更改平面之间的Z距离和平面范围,以实现这些目的。 请参见下面的图像层距离控制。

谢谢 !

如果喜欢,可以给Organismo-iOS-Driver Github存储库和本文加注星标。 🙂