mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
4 KiB
4 KiB
iOS UIActivity Sharing
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中被广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFTs
- 加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @carlospolopm。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
UIActivity Sharing Simplified
从iOS 6开始,第三方应用程序可以使用AirDrop等机制共享文本、URL或图像等数据,如苹果的应用间通信指南中所述。此功能通过系统范围的_共享活动表_实现,用户与“分享”按钮交互时会出现该表。
可以在UIActivity.ActivityType中找到所有内置共享选项的详尽枚举。开发人员可以选择排除特定的共享选项,如果认为这些选项不适合其应用程序。
如何共享数据
应注意以下内容:
- 要共享的数据的性质。
- 包括自定义活动。
- 排除某些活动类型。
通过实例化UIActivityViewController
来实现共享,将要共享的项目传递给它。这可以通过调用实现:
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
开发人员应该仔细审查UIActivityViewController
的初始化活动和自定义活动,以及任何指定的excludedActivityTypes
。
如何接收数据
在接收数据时,以下几个方面至关重要:
- 自定义文档类型的声明。
- 指定应用程序可以打开的文档类型。
- 验证接收数据的完整性。
即使没有访问源代码,也可以检查Info.plist
中的键,如UTExportedTypeDeclarations
,UTImportedTypeDeclarations
和CFBundleDocumentTypes
,以了解应用程序可以处理和声明的文档类型。
关于这些键的简明指南可在Stackoverflow上找到,强调了定义和导入UTIs以供系统广泛识别,并将文档类型与您的应用程序关联以在“打开方式”对话框中集成的重要性。
动态测试方法
要测试发送活动,可以:
- 钩入
init(activityItems:applicationActivities:)
方法以捕获正在共享的项目和活动。 - 通过拦截
excludedActivityTypes
属性来识别排除的活动。
对于接收项目,涉及:
- 从其他来源(例如AirDrop,电子邮件)与应用程序共享文件,以触发“打开方式...”对话框。
- 钩入
application:openURL:options:
等在静态分析期间识别的其他方法,以观察应用程序的响应。 - 使用格式错误的文件或模糊技术来评估应用程序的健壮性。