有没有办法以编程方式为 iOS 上的 3rd 方应用程序获取 UI 层次结构?

Posted

技术标签:

【中文标题】有没有办法以编程方式为 iOS 上的 3rd 方应用程序获取 UI 层次结构?【英文标题】:Is there a way to get programmatically UI hierarchy for 3rd party application on iOS? 【发布时间】:2013-11-05 23:46:10 【问题描述】:

我正在寻找一种以编程方式获取 3rd 方应用程序 UI 层次结构的方法。

几个约束:

我正在寻找一种方法来获取 3rd 方应用程序的 UI(因此我不能在其中包含任何库或更改代码) 它应该可以在真正的 ios 设备上运行(而不是在模拟器上) 它应该适用于未越狱的设备。 它应该适用于原生应用程序

我都可以:

一个桌面工具,可以访问 iOS 并获取有关应用层次结构的信息 一个 iOS 应用,可以在后台获取第 3 方应用的 UI 层次结构 我可以使用私有 API(它不会提交到 AppStore)

欢迎任何想法(即使它们不是完整的解决方案)。

【问题讨论】:

有人将 X11 移植到应用程序吗? @QED:它与问题有什么关系? 【参考方案1】:

SparkInspector http://www.sparkinspector.com 类似于 Reveal,但我不确定它是否能够在真实设备上工作。

【讨论】:

这需要修改应用程序。您必须将他们的框架添加到您的项目中。因此,它不适用于 3rd 方应用。【参考方案2】:

我推荐 DCIntrospect:https://github.com/domesticcatsoftware/DCIntrospect

还有 Reveal:http://revealapp.com

【讨论】:

DCIntrospect 和 Reveal 都需要向您的应用程序添加一个库。因此,它不适用于 3rd 方应用。【参考方案3】:

您可以使用 MobileSubstrate 将 Reveal 动态库注入到第三方应用程序中。这只能通过越狱设备执行。描述该过程的博客文章: http://www.zdziarski.com/blog/?p=2361

【讨论】:

我在问题中写的一个约束是“它应该适用于非越狱设备。” 是的,是的,你做到了。抱歉,我被这里的其他答案绕开了,并没有阅读您的所有要点。但是看看你的点,如果没有越狱/注入自定义代码,你将无法实现这一点。想象一下,如果我可以远程检查某人的银行应用程序的“UI”,标准安全模型会阻止这种情况,而不管私有 API 是什么 也许你是对的。但是,我想可能存在一些可以执行此操作的桌面实用程序(考虑到该设备无论如何都需要在完成任何其他操作之前信任桌面)。 还有一件事。 iOS 有一些私有 API,这些 API 肯定与他们自己的安全模型不兼容。因此,有可能存在允许读取 3rd 方层次结构的 API。

以上是关于有没有办法以编程方式为 iOS 上的 3rd 方应用程序获取 UI 层次结构?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Windows 上的 C++ 中以编程方式设置环境路径?

有没有办法以编程方式访问 iOS 图像描述器?

有没有办法在Swift中以编程方式设置NSCollectionView?

有没有办法以编程方式获取 iOS 中音频单元的所有参数?

有没有办法通过 iOS/swift 中的蓝牙以编程方式连接 android 和 IOS 设备?

有没有办法以编程方式对 Android 上的系统权限对话框执行输入操作?