Что это
ResignTool - это бесплатная нативная Mac-утилита для переподписывания .ipa-файлов iOS-приложений другим Apple Developer сертификатом. GUI-обёртка над командами codesign и iresign из CLI, которая делает сложный процесс переподписи доступным через drag-and-drop.
Каждое iOS-приложение перед установкой на iPhone должно быть подписано Apple Developer сертификатом и иметь действительный provisioning profile. Когда вы строите приложение в Xcode и заливаете в TestFlight - подпись делается автоматически. Но иногда нужно переподписать готовый .ipa: при переносе между аккаунтами, для Enterprise-распространения, для тестирования чужой сборки на своём устройстве. ResignTool делает это в один клик вместо ручной работы с CLI.
Программа создана разработчиком InjoyDeng, написана на Objective-C, размер 419+ звёзд на GitHub. Лицензия MIT - полностью открытый код. Распространяется как Xcode-проект без готового DMG, для использования нужно собрать самостоятельно (5-10 минут работы).
ResignTool - не единственный инструмент в нише, но один из самых надёжных. Использует под капотом стандартные команды Apple, поэтому переподписанные .ipa полностью совместимы с iOS-устройствами и работают так же как изначально подписанные.
Кому подойдёт
В первую очередь - iOS-разработчикам, поддерживающим несколько Apple Developer аккаунтов. Например, если работаете в команде, которая публикует приложение от своего team account, но иногда нужно протестировать через ваш individual account - ResignTool позволяет переподписать .ipa без пересборки в Xcode.
Во вторую - компаниям, которые покупают чужие приложения. При приобретении iOS-приложения у другого разработчика часто нужно перевести его под свой Apple Developer аккаунт. Это требует не только перерегистрации в App Store Connect, но и переподписи существующих .ipa которые могут быть в обращении (для тестирования или back-up).
В третью - разработчикам Enterprise-приложений. Apple Enterprise Program позволяет распространять iOS-приложения внутри компании без App Store, но требует постоянной подписи Enterprise-сертификатом. ResignTool ускоряет процесс переподписи новых билдов, особенно если разработка ведётся внешней командой которая предоставляет .ipa без Enterprise-подписи.
В четвёртую - QA-инженерам и тестировщикам. Получили dev-сборку от разработчика, но в provisioning profile нет вашего UDID? Переподпишите своим Ad-Hoc-сертификатом с включённым UDID - и сборка установится на ваш iPhone.
В пятую - специалистам по безопасности и реверс-инженерам. Анализ чужих iOS-приложений часто требует установки переподписанных версий на тестовое устройство. ResignTool облегчает этот процесс (с обязательным соблюдением legal requirements - только legitimate-доступ).
Ключевые возможности
Drag-and-drop загрузка .ipa
Перетащите .ipa файл из Finder в окно ResignTool - программа автоматически распакует архив, прочитает метаданные приложения (Bundle ID, имя, версию, иконку) и подготовит к переподписи.
Выбор Provisioning Profile
ResignTool показывает все provisioning profiles установленные в ~/Library/MobileDevice/Provisioning Profiles/. Выбираете нужный (Development, Ad-Hoc, App Store или Enterprise), программа показывает связанные UDID и Bundle ID.
Выбор сертификата подписи
Сертификаты для подписи берутся из Keychain - все Apple Developer сертификаты которые установлены в системе. Выбор Distribution или Development cert в зависимости от целевой подписи.
Переподписывание одной кнопкой
После выбора всех параметров кнопка Resign выполняет:
1. Распаковывает .ipa
2. Удаляет старую подпись из приложения
3. Заменяет provisioning profile в .app bundle на новый
4. Подписывает приложение новым сертификатом через codesign
5. Запаковывает в новый .ipa
Весь процесс - 10-30 секунд для среднего приложения.
Изменение Bundle Identifier
Если новый сертификат и provisioning profile требуют другой Bundle ID (например, original был com.olddev.app, новый должен быть com.newdev.app), ResignTool изменит ID в Info.plist и пересоздаст подпись.
Подмена иконок
Для случаев когда нужно переподписать приложение с другим брендингом - можно подменить иконку в bundle. Полезно для white-label приложений.
Редактирование Info.plist
В том же интерфейсе можно изменить любые поля Info.plist: Display Name, Version, Build, разрешения и т.д.
Плюсы и минусы
Плюсы:
- Бесплатно, лицензия MIT, открытый исходный код.
- Native Objective-C приложение - быстрая работа.
- Использует стандартные Apple-команды (codesign) под капотом - совместимость гарантирована.
- 419+ звёзд на GitHub - проверено сообществом.
- Drag-and-drop UI - не требует знания CLI.
- Поддержка всех типов сертификатов (Development, Ad-Hoc, App Store, Enterprise).
- Возможность изменения Bundle ID и Info.plist в одном интерфейсе.
Минусы:
- Нет готового DMG - нужно собрать через Xcode.
- Не обновляется с марта 2020 - может потребоваться правка кода для современного Xcode.
- Не работает с зашифрованными .ipa (приложения скачанные напрямую с App Store зашифрованы DRM).
- Ограниченная документация в самой программе.
- Apple ужесточает Enterprise distribution каждый год - инструмент не может обойти эти ограничения.
- Не показывает результат переподписи (нужно вручную проверить через Xcode или Finder).
Как установить и использовать
Скачайте ResignTool со страницы программы на mac-soft.ru. Программа распространяется как исходный код на GitHub.
Пошаговая установка:
- Установите Xcode из Mac App Store
- Склонируйте репозиторий:
git clone https://github.com/InjoyDeng/ResignTool.git - Откройте
ResignTool.xcodeprojв Xcode - Если Xcode попросит обновить настройки проекта - согласитесь
- Возможно, нужно настроить Signing для самой программы (выбрать ваш Team)
- Нажмите Cmd+R для сборки
При сборке могут возникнуть warning или error из-за устаревших API. Решаются обычно:
- Updating to recommended settings (предлагает Xcode)
- Замена deprecated методов на современные эквиваленты
- Проверка deployment target (минимум 10.10)
После успешной сборки .app будет в DerivedData. Скопируйте в Applications для постоянного использования.
Использование (после сборки):
- Подготовьте provisioning profile для переподписи (через Apple Developer Portal)
- Установите provisioning profile в систему - дабл-клик по .mobileprovision файлу
- Установите соответствующий сертификат в Keychain (Distribution или Development)
- Запустите ResignTool, перетащите .ipa файл в окно
- Выберите provisioning profile и сертификат
- При необходимости измените Bundle ID или иконку
- Нажмите Resign - получите новый .ipa файл
Для проверки: установите переподписанный .ipa на тестовое iPhone-устройство через Xcode (Window → Devices and Simulators → Drag .ipa). Приложение должно открыться без ошибок.
Альтернативы
Если ResignTool не подходит - есть варианты:
- iOS App Signer (DanTheMan827) - другой популярный GUI для переподписи. Активно поддерживается.
- iresign - оригинальный CLI который ResignTool обёртывает. Подходит для скриптов и автоматизации.
- fastlane sigh - часть fastlane toolchain, работает через CLI с настройкой пайплайнов.
- Xcode Archive + Distribute - встроенный процесс Apple для подписи. Требует исходного кода (не работает с готовым .ipa).
Для нерегулярного ручного использования - ResignTool. Для CI/CD - fastlane.
Итог
ResignTool - надёжный инструмент для переподписи iOS-приложений, проверенный сообществом за 6 лет существования. Не самый активно развиваемый (последний коммит 2020), но рабочий и стабильный.
Используйте только с легально полученными .ipa - переподписывание чужих приложений без разрешения нарушает Apple Developer Agreement. Для своих сборок, сборок команды или сборок с разрешением правообладателя - инструмент незаменим.
Всегда соблюдайте лицензионные условия как Apple, так и владельцев приложений. ResignTool - технический инструмент, ответственность за legal-сторону использования лежит на пользователе.
Скачать ResignTool для macOS можно на mac-soft.ru. Программа бесплатная, open source, требует Xcode для сборки.
Комментарии (0)