Nano Hash - криптовалюты, майнинг, программирование

Как точно определить наличие и/или отсутствие джейлбрейка в iOS?

После того, как я посетил урок программирования, один из моих друзей показал мне приложение, которое не позволяло ему пройти дальше первого экрана из-за взломанного iPhone.

С тех пор я был заинтригован тем, как приложение смогло обнаружить джейлбрейк, не будучи заблокированным Apple, и, будучи защитником джейлбрейка, которым я являюсь, я продолжал безуспешно пытаться найти надежный способ обнаружения взломанного устройства iOS. предотвратить обман людей, если я когда-нибудь решу выпустить игру в App Store.

Кто-нибудь знает надежный метод (ы) для определения статуса джейлбрейка устройства, который не может быть легко обойден указанным взломанным устройством?

EDIT: основываясь на недавних комментариях, я просто хотел бы уточнить, что цель этого поста — поделиться знаниями, которые я получил, найдя эту статью, и предоставить место где другие пользователи могут поделиться своими методами обнаружения джейлбрейка.


  • Это очень старый вопрос, который задавался много раз, и к нему есть много разных подходов, которые развивались с течением времени с тех пор, как был выпущен первый SDK для iPhone. Я считаю, что до сих пор нет надежного подхода, а скорее множество небольших тестов, которые вы можете выполнить, и они продолжают меняться по мере развития гонки вооружений между Apple и сообществом джейлбрейков. 03.02.2016
  • Намерение SO состоит в том, чтобы не поделиться статьей, для этого и существуют блоги. 04.02.2016
  • @zaph, напротив, если переполнение стека было не для того, чтобы поделиться своими новообретенными знаниями в формате вопросов и ответов, который используют все остальные, то почему там есть ответ на ваш собственный вопрос кнопка на странице задать вопрос? 04.02.2016
  • @ACE, кнопка предназначена для ответов, которые могут принести пользу другим. Вопрос задавался много-много раз. Вы просто скопировали ссылку, которую можно прогуглить за 2 секунды. Да и ссылка не очень полезная — Apple известна отказом от приложений с такими проверками. Например, вы не должны получать доступ к файлам за пределами вашей песочницы. И не следует вызывать API, которые не разрешены песочницей. Все остальное работает не очень. 04.02.2016

Ответы:


1

Блокировка всех взломанных пользователей, вероятно, не поможет вам бороться с пиратством приложений, если вы выпустили игру в App Store, потому что это заставит их получить пиратскую версию игры, чтобы иметь возможность играть (вместо того, чтобы дать им возможность платить играть в игру).

Что вам нужно, так это проверить, является ли игра законной версией из App Store. Но даже это потенциально может быть исправлено парнями, которые взламывают игры, чтобы выпустить их...

Вы можете проверить, зашифрован ли текущий исполняемый файл, что является хорошим способом узнать, было ли приложение пиратским, просмотрев этот ответ< /а>.

В противном случае, если это бесплатная игра с покупками в приложении, проверка квитанции помогает заблокировать большинство настроек, связанных с оплатой покупок в приложении.

Но определенно нет способа полностью заблокировать пиратство приложений.

Вы всегда можете упомянуть, как вы работали над этой игрой в игре... Это может убедить нескольких человек заплатить за легальную версию игры.

03.02.2016
  • В 99% случаев это действительно не так, как это работает с приложениями для iOS. Вы не взламываете и не исправляете файлы IPA (за исключением 1% случаев). Вместо этого вы делаете джейлбрейк телефона и блокируете ОС от проверки вашего IPA. Это можно легко сделать с помощью инструмента Cydia. В любом случае, как сказал lap.felix, блокировка всех взломанных устройств заблокирует ваше приложение даже для законных пользователей, которые фактически приобрели ваше приложение в App Store (хотя их устройства взломаны). 03.02.2016
  • @sleepwalkerfx, в 99% случаев вы взламываете файлы IPA, что означает их расшифровку. Это нарушает подпись кода, и поэтому вам нужен инструмент Cydia для отключения проверки IPA. IPA зашифрованы идентификатором Apple, который приобрел приложение. Вам нужно их расшифровать или каким-то образом получить этот Apple ID. Как в китайских магазинах приложений, которые позволяют устанавливать пиратские приложения даже на невзломанные устройства. Другой способ — отказаться от приложения с сертификатом разработчика. 03.02.2016
  • @creker, нет. В 99% случаев вы не взламываете файлы IPA. Я хочу, чтобы вы сначала попробовали это и прокомментировали здесь. Просто скомпилируйте и заархивируйте файл IPA из Xcode. Затем возьмите взломанный телефон и синхронизируйте этот невзломанный IPA с вашим взломанным телефоном, на котором установлен AppSync через cydia. Вы увидите, как работает IPA без каких-либо трещин. Он не нуждается в взломе. Все, что вам нужно, это настроить Cydia для iOS, вот и все. 03.02.2016
  • Проверка @creker IPA завершается ошибкой, даже если она не взломана (нетронута), если вы не пытаетесь использовать ее на перечисленных устройствах на своем портале разработки. Китайские магазины приложений используют массовое корпоративное лицензирование для публикации своих пиратских приложений на устройствах без взлома. Они придумали, как упростить процесс покупки слота разработчика и использования его сертификата для установки «взломанных» приложений. 03.02.2016
  • @sleepwalkerfx, и при чем тут это? Приложения из магазина приложений шифруются с помощью идентификатора Apple ID, который их загрузил или приобрел. Если вы хотите пиратить его и распространять среди других пользователей, вы должны взломать его, то есть удалить шифрование. Даже если у вас есть корпоративная учетная запись, прежде чем вы сможете отказаться от нее, вы должны ее взломать. Я знаю это не понаслышке — вы ничего не сможете сделать с IPA в AppStore, пока не взломаете их. Бинарник приложения зашифрован, его даже не разобрать. 03.02.2016
  • Китайские магазины приложений на самом деле не используют корпоративную учетную запись. По крайней мере, kuiayong нет. Их приложения являются действительными IPA в AppStore, которые были приобретены в AppStore с использованием действительных идентификаторов Apple ID. Когда вы устанавливаете приложение, вы должны установить эти Apple ID на свое устройство — для этого есть специальная кнопка в kuiayong. Если вы этого не сделаете, iOS запросит у вас пароль Apple ID, который приобрел приложение, когда вы попытаетесь запустить его. Этот факт доказывает, что это не приложение, подписанное предприятием. 03.02.2016
  • @creker Моя точка зрения заключалась в том, что если у вас есть взломанный iphone с установленным AppSync и с вами файл IPA (взломанный или нет), он работает сразу, если только разработчик не использовал специальную технику для определения того, взломан ли телефон, как ОП спросил здесь (99 % Разработчики так не делают). Так что в 99% случаев вам не нужно взламывать IPA, чтобы работать на взломанном телефоне. Вы можете проверить это сами, как я упоминал ранее. Просто скомпилируйте IPA, не взламывайте, тестируйте на чьем-то взломанном телефоне, который не связан со списком тестовых устройств вашего портала разработки с его UDID. Если его нужно взломать, он не должен работать в этом телефоне. 08.02.2016
  • @creker, как вы знаете, скомпилированные файлы IPA работают только на устройствах, которые связаны с вашей учетной записью разработчика. Если вы попытаетесь установить его на другое устройство, это не удастся. Но если это другое устройство взломано и на нем установлен AppSync, то этот IPA будет работать. Его просто не нужно взламывать. Вам не нужно удалять какое-либо шифрование. Вы можете раздать его любому, у кого есть взломанный iphone. Все файлы IPA работают таким образом. Будь то законно загруженная из магазина приложений или скомпилированная версия из Xcode. 08.02.2016
  • @sleepwalkerfx, опять же, вы говорите совсем о другом, не имеющем отношения к теме. О IPA для разработчиков, сгенерированных Xcode, не может быть и речи, даже не упоминайте их. Весь вопрос в приложениях AppStore. И они зашифрованы. AppSync и джейлбрейк бесполезны, если вы их не взломаете. Вот и все, иначе никак. IPA, сгенерированные AppStore и Xcode, НЕ совпадают. Они отличаются, потому что IPA AppStore используют FairPlay DRM, который шифрует двоичные файлы приложения. Поэтому, пожалуйста, прекратите распространять дезинформацию и изучите тему, прежде чем спорить. 08.02.2016

  • 2

    На днях я наткнулся на статью, содержащую точный ответ, который я искал.

    Из https://www.theiphonewiki.com/wiki/Bypassing_Jailbreak_Detection

    Несмотря на то, что существует бесчисленное множество способов, с помощью которых приложения могут реализовать проверку взломанных устройств, они обычно сводятся к следующему:

    Существование каталогов. Проверьте файловую систему на наличие таких путей, как /Applications/Cydia.app/ и /private/var/stash, среди горстка других. Чаще всего они проверяются с помощью метода -(BOOL)fileExistsAtPath:(NSString*)path в NSFileManager, но более хитрые приложения любят использовать низкоуровневые функции C, такие как fopen(), stat() или access().

    Разрешения каталога. Проверьте права доступа к файлам Unix для определенных файлов и каталогов, используя методы NSFileManager, а также функции C, такие как statfs(). Гораздо больше каталогов имеют доступ для записи на взломанном устройстве, чем на том, что все еще находится в тюрьме.

    Разветвление процессов. sandboxd не запрещает приложениям App Store использовать fork(), popen() или любые другие функции C для создания дочерних процессов на устройствах без взлома. sandboxd явно запрещает разветвление процессов на устройствах в тюрьме. если вы проверите возвращенный pid на fork(), ваше приложение может сказать, успешно ли оно разветвлено или нет, и в этот момент оно может определить статус джейлбрейка устройства.

    Петлевые подключения SSH*. Из-за большого количества взломанных устройств, на которых установлен OpenSSH, некоторые приложения будут пытаться подключиться к 127.0.0.1 через порт 22. Если подключение будет успешным, это означает, что OpenSSH установлен и работает на устройстве, поэтому оно взломано.

    system(). Вызов функции system() с аргументом NULL на устройстве в тюрьме вернет 0; Если сделать то же самое на взломанном устройстве, будет возвращено значение 1. Это связано с тем, что функция проверит, существует ли /bin/sh, и это относится только к взломанным устройствам.[1]

    функции dyld — безусловно, самые сложные. Вызов таких функций, как _dyld_image_count() и _dyld_get_image_name(), чтобы увидеть, какие dylibs загружены в данный момент. Очень сложно исправлять, так как патчи сами по себе являются частью dylibs.

    *Это реализовано лишь в очень небольшом количестве приложений (поскольку это далеко не так эффективно, как другие)

    приведенный выше отрывок был отредактирован для краткости

    Я решил опубликовать это здесь как обмен знаниями для тех разработчиков приложений, которые задаются вопросом, как это одно приложение смогло успешно реализовать обнаружение джейлбрейка, когда все другие попытки обнаружения джейлбрейка отвергаются Apple.

    03.02.2016
  • Спасибо! Хотя, признаюсь, она у меня в записях лежала, пока мне не запретили задавать вопросы... 03.02.2016
  • @ACE, если вы в конечном итоге создадите чеки, поделитесь своим кодом здесь. 03.02.2016
  • @SamB Я могу создать какой-то фреймворк или библиотеку, но это просто для того, чтобы помочь ответить на вопросы о том, что мое обнаружение джейлбрейка было отклонено, и предоставить несколько различных способов проверки джейлбрейка ... 03.02.2016
  • Если вы хотите создать библиотеку, фреймворк или что-то в этом роде, обязательно опубликуйте это! 03.02.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..