Подтвердить что ты не робот

IOS - Возможно ли общение между приложениями через localhost?

Рассмотрим эту гипотетическую ситуацию:

Приложения Bob и Eve установлены на одном iPhone. Приложение Bob работает и связывается с localhost: 8080 для прослушивания вызовов AJAX со своего собственного UIWebView. Приложение Eve работает в фоновом режиме и пытается вмешиваться в приложение Bob, создавая вызовы AJAX на localhost: 8080.

Два вопроса:

  • Предполагая, что приложение Eve знает API Bob AJAX, будут ли ее вызовы успешными? (т.е. трафик изолированной среды iOS на локальном хосте?)

  • Возможно ли, чтобы приложение Eve обнюхало трафик, создаваемый приложением Bob?

4b9b3361

Ответ 1

  • Если приложение Bob работает, да, приложение Eve может подключиться к нему.

Есть два возможных способа добиться этого. На переднем плане находится приложение Bob, и приложение Eve подключается к нему в фоновом режиме, учитывая, что приложение Eve работает в фоновом режиме. Или приложение Bob работает в фоновом режиме, а приложение Eve подключается к нему на переднем плане.

По умолчанию iOS приостанавливает приложения в фоновом режиме. Если приложение использует фоновое выполнение и продолжает работать в фоновом режиме, оно может получить доступ к сети, как обычно.

Вы можете прочитать "Вне основы" в Apple технические заметки по сети и многозадачности

  • Приобретение трафика требует корневого доступа, оно не может быть выполнено, если приложение Eve не является jailbroken-приложением.

В разделе "BSD (включая Mac OS X)" статьи Wireshark CapturePrivileges указано, что в системах BSD нам нужно иметь разрешение доступа к устройствам BPF для захвата пакетов (чтение: sniff network traffic). Только root (или любой суперпользователь) может обращаться к устройствам BPF или предоставлять другим пользователям доступ к ним.