iOS UIActivity Sharing

iOS UIActivity Sharing

Support HackTricks

UIActivity Sharing Simplified

З iOS 6 і далі, сторонні додатки отримали можливість ділитися даними такими як текст, URL-адреси або зображення, використовуючи механізми, такі як AirDrop, як зазначено в Посібнику з міждодаткової комунікації від Apple. Ця функція проявляється через системний лист активності обміну, який з'являється при взаємодії з кнопкою "Поділитися".

Вичерпний перелік усіх вбудованих варіантів обміну доступний за посиланням UIActivity.ActivityType. Розробники можуть вирішити виключити певні варіанти обміну, якщо вважають їх непридатними для свого додатку.

How to Share Data

Увага повинна бути зосереджена на:

  • Природі даних, що обмінюються.

  • Включенні користувацьких активностей.

  • Виключенні певних типів активностей.

Обмін здійснюється через створення UIActivityViewController, до якого передаються елементи, призначені для обміну. Це досягається шляхом виклику:

$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:

Розробники повинні уважно перевірити UIActivityViewController на наявність активностей та користувацьких активностей, з якими він ініціалізується, а також будь-яких вказаних excludedActivityTypes.

Як отримати дані

Наступні аспекти є критично важливими при отриманні даних:

  • Оголошення користувацьких типів документів.

  • Визначення типів документів, які може відкривати додаток.

  • Перевірка цілісності отриманих даних.

Без доступу до вихідного коду, можна все ще перевірити Info.plist на наявність ключів, таких як UTExportedTypeDeclarations, UTImportedTypeDeclarations та CFBundleDocumentTypes, щоб зрозуміти, які типи документів може обробляти та оголошувати додаток.

Стисла інструкція щодо цих ключів доступна на Stackoverflow, підкреслюючи важливість визначення та імпортування UTI для системного визнання та асоціювання типів документів з вашим додатком для інтеграції в діалозі "Відкрити з...".

Динамічний підхід до тестування

Щоб протестувати відправку активностей, можна:

  • Підключитися до методу init(activityItems:applicationActivities:), щоб захопити елементи та активності, які передаються.

  • Визначити виключені активності, перехопивши властивість excludedActivityTypes.

Для отримання елементів це включає:

  • Поділитися файлом з додатком з іншого джерела (наприклад, AirDrop, електронна пошта), що викликає діалог "Відкрити з...".

  • Підключити application:openURL:options: серед інших методів, виявлених під час статичного аналізу, щоб спостерігати за реакцією додатка.

  • Використовувати неправильно сформовані файли або техніки фуззингу для оцінки надійності додатка.

Посилання

Support HackTricks

Last updated