Можно ли скомпилировать и запустить проект Xcode на взломанном устройстве без платного сертификата разработчика?

9

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

У меня iPod Touch 5-го поколения, взломанный с помощью evasi0n и работающий под управлением iOS 6.1.

Я использую Xcode 4.6 с OS X (10.8.2) Lion.

Joncom
источник

Ответы:

6

Следующие инструкции для достижения этой цели взяты из: http://iphonedevwiki.net/index.php/Xcode

Мои выводы и действия представлены на каждом этапе.

1. Создайте самозаверяющий сертификат для подписи кода с именем «iPhone Developer» в цепочке для ключей «логин» (по умолчанию), используя Keychain Access.

  • Я сделал скриншоты, следуя приведенным выше инструкциям.
  • Я оставил большинство полей пустыми или по умолчанию.

введите описание изображения здесь

2. Откройте /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist(4.2 или ниже:) /Developer/Platforms/iPhoneOS.platform/Info.plist. Вам может потребоваться разрешение root.

  • Я использую Xcode 4.6, поэтому я открыл прежний .plistфайл.

3. Заменить все вхождения XCiPhoneOSCodeSignContextна XCCodeSignContext. Их три (версия XCode 3.2.4+).

  • Я сделал три модификации, как показывают скриншоты.

введите описание изображения здесь введите описание изображения здесь введите описание изображения здесь

4. Сохраните файл и перезапустите Xcode.

  • Сохраненный файл

5. Убедитесь, что у вас есть ldid на вашем Mac. Поместите копию где-нибудь, например, в /usr/local/bin.

6. Создайте скрипт Python ldid3.py прямо рядом с программой ldid. Сделайте это исполняемым. Заполните это:

#!/usr/bin/env python

from sys import argv
from subprocess import check_call
from os.path import basename, dirname, splitext, join
from tempfile import NamedTemporaryFile

app = argv[-1]
ldid_path = join(dirname(__file__), 'ldid')
obj_path = join(app, splitext(basename(app))[0])

if '-gta' not in argv:
    check_call([ldid_path, '-S', obj_path])
else:
    with NamedTemporaryFile('w+b', 0) as f:
        f.write("""
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>get-task-allow</key>
    <true/>
  </dict>
</plist>
        """)
        check_call([ldid_path, '-S' + f.name, obj_path])
  • Я создал новый простой текстовый файл и скопировал в него приведенный выше код.
  • Я сохранил этот файл как ldid3.pyи сохранил его в /usr/local/binкаталоге.
  • В терминале побежал chmod 777 /usr/local/bin/ldid3.py.

7. Открыть iPhoneCodeSign.xcspec. Этот файл можно найти в [Для Xcode 4.6: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec]:

8. Измените запись в файле с вызова codesignна ldid3.py.

  • В соответствии с официальной инструкцией, преобразуйте файл спецификации в обычный текст, набрав в консоли: sudo plutil -convert xml1 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications/iPhoneCodeSign.xcspec
  • Я открыл файл с помощью TextEdit.
  • Заменено <key>CommandLine</key><string>/usr/bin/codesign</string>на <key>CommandLine</key><string>/usr/local/bin/ldid3.py</string>.

9. Сохраните файл и перезапустите Xcode.

  • Я сохранил файл и вышел из TextEdit.

10. Создайте файл /var/mobile/tdmtanfна устройстве, чтобы включить «обход TDMTANF» от Apple в installd (предупреждение: в этом случае вы также попадете в «песочницу» GameCenter).

  • Я создаю пустой текстовый файл в Windows, tdmtanfназываю его SSH'd в моем iPod, загружаю его /var/mobile/и перезагружаю мой iPod.

Теперь, когда все это закончилось с ...

Я открываю свой существующий проект Xcode и нажимаю Run. Работает в iOS Simulator без проблем.

введите описание изображения здесь

Я уверен, что Code Signing настроен на использование сертификата, настроенного на шаге 1.

введите описание изображения здесь

Я создаю приложение (Project> Build). Сообщение об успехе следует.

Я беру папку TicTacToe.appс моим приложением /Libary/Developer/Xcode/DerivedData/TicTacToe-cjgzmoxtflyegtfypsbxbuiuwxns/Build/Products/Debug-iphoneos/и переношу ее на мой компьютер с Windows, чтобы установить на мой iPod.

В попытке установить приложение на свой iPod я перетащил TicTacToe.appв раздел приложений утилиты конфигурации iPhone, но получил это сообщение об ошибке, в котором говорится, что мое приложение «не является допустимым мобильным приложением».

Я также попытался вручную установить приложение, используя iFunbox и приложение AppCake , найденное в Cydia. Оба терпят неудачу.

введите описание изображения здесь введите описание изображения здесь

Интересно, потому что, как я гуглил, я заметил, что многие люди отмечают важность этого: у меня установлен AppSync. (Извините за огромный скриншот. Если мне нужно снять его, пожалуйста, дайте мне знать!)

введите описание изображения здесь

Вывод

Поэтому, несмотря на то, что я несколько раз следовал инструкциям, мое приложение iPhone Configuration Utility не распознало его как действительное. Я не могу установить приложение вручную с помощью программ, таких как iFunbox, или приложений Cydia, таких как AppCake.

Я подозреваю, что приложение действительно недействительно, но, внимательно следуя инструкциям, я не знаю почему.

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

Joncom
источник
Это было интересное чтение, хотя.
Thecafremo
Нет - рад, что прочитал его и, возможно, вернусь к нему в будущем. Спасибо, что поделились этим.
Роберт
Это было очень полезно для меня при работе на Xcode 4.2 и iOS 4, я надеюсь, что кто-то может обновить процедуру до Xcode 4.6
rraallvv
После загрузки ldid вам нужно изменить его разрешения на 755 с помощью chmod 755 ldid. Это вызывало у меня ошибку выхода 1.
0

Вы можете подключить свое устройство и выбрать устройство iOS в качестве цели запуска. при запуске приложение автоматически устанавливается на ваше устройство. Или вы можете выбрать ваше устройство iOS, тогда вам не нужно запускать его, просто создать и заархивировать. После этого распространите ... выберите Сохранить для предприятия или Специальное развертывание. Вы получите ваш .ipa файл. Надеюсь, это поможет вам ..

sl33py
источник
0

продолжение ответа @joncom. Вы можете добавить файлы .app на свой iPhone напрямую, всего за несколько дополнительных шагов.

  • скопируйте .appфайл на рабочий стол, а затем заархивируйте его
  • переименовать [yourappname].zipв[yourappname].ipa
  • затем скачайте AppSync из cydia
  • загрузите и установите файл .ipa на свое устройство

НОТА:

Вы также можете сделать это напрямую , минуя все модификации кода Python @joncom упомянутый .. далее здесь

Лео
источник