iOS UIActivity Sharing
最后更新于
支持HackTricks的其他方式:
如果您想看到您的公司在HackTricks中被广告或下载PDF格式的HackTricks,请查看订阅计划!
加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @carlospolopm。
通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
从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:等在静态分析期间识别的其他方法,以观察应用程序的响应。
使用格式错误的文件或模糊技术来评估应用程序的健壮性。
最后更新于