Ipapatch предоставляет простой способ исправления приложений для iOS, не нуждаясь в джейлбрейке.
[Особенности • Инструкции • Пример • FAQ • Лицензия]
Ipapatch включает в себя шаблон проекта XCode, который предоставляет следующие функции:
Создайте и запустите сторонние IPA с вашим инъецированным кодом
Вы можете запустить свой собственный код внутри файла IPA в качестве динамической библиотеки. Таким образом, вы можете изменить поведение этого приложения, используя время выполнения Objective-C.
Представлено пользовательское предупреждение в приложении YouTube
Пошаговая отладка с LLDB
Вы можете отлаживать сторонние приложения, такие как ваши собственные. Например:
Отладка YouTube с Xcode
Ссылка внешних фреймворков
Связывая существующие рамки, вы можете очень легко интегрировать сторонние услуги с приложениями, например, Specuet.
Осмотрите YouTube, ссылаясь на SpectServer.FrameWork
Генерировать распределимые файлы .ipa
Вы можете очень легко распространять свой патч/работу своим друзьям, с помощью iPapatch, сгенерированной модифицированной версией .ipa файлов.
Измененная версия facebook.ipa, созданная iPapatch
Клонировать или скачать этот проект
Загрузите этот проект на свой местный диск
Подготовьте расшифрованный файл IPA
Используемый вами файл IPA должен быть расшифрован, вы можете получить расшифрованную IPA с Jailbroken Device или загрузить его непосредственно с сайта загрузки IPA, например, http://www.iphonecake.com
Заменить IPA Placeholder
Замените файл IPA, расположенный по адресу IPAPatch/Assets/app.ipa на ваш, это файл заполнителя. Имя файла должно оставаться app.ipa после замены.
Поместите внешние ресурсы/фреймворки (необязательно)
Поддерживаются типы внешнего файла:
IPAPatch/Assets/Frameworks .IPAPatch/Assets/Frameworks/RevealServer.frameworkIPAPatch/Assets/Dylibs .IPAPatch/Assets/ResourcesНастройте настройки сборки
IPAPatch.xcodeprojIPAPatch-DummyAppDisplay Name по умолчанию на «?», Это используется в качестве префикса окончательного отображаемого имени.Bundle Identifier , чтобы соответствовать вашим профилям подготовкиНастройте параметры ippatch
Вы можете настроить поведение iPapatch с помощью Tools/options.plist
| Имя | Описание | По умолчанию |
|---|---|---|
| RESTORE_SYMBOLS | Когда YES , iPapatch попытается восстановить таблицу символов из Mach-O для отладки предложения (с инструментами от https://github.com/tobefuturer/restore-mbol, также благодаря @henrayluo и @Dannion) | НЕТ |
| Create_ipa_file | Когда YES , iPapatch будет генерировать файл IPA на каждой сборке. Genrated File расположен в SRCROOT/Product | НЕТ |
| Ignore_ui_supported_devices | Когда YES , iPapatch удалит UISupportedDevices из info.plist's Info.plist Source. | НЕТ |
| Remove_watchplaceholder | Когда YES , iPapatch удалит папку com.apple.WatchPlaceholder из пакета приложения Source | ДА |
| USE_ORIGINAL_ENTITLENTEMS | Когда YES , iPapatch будет использовать права Source App для ухода в отставку, вам необходимо убедиться, что ваш профиль подготовки соответствует правам, или вам необходимо отключить AMFI на целевом устройстве | НЕТ |
Кодировать свой патч
Запись AT +[IPAPatchEntry load] , вы можете написать код, запускаясь отсюда. Чтобы изменить поведение приложений, вам может потребоваться использовать какой -то метод библиотеки Swizzling, такой как Steipete/Assocts.
Строить и бежать
Выберите реальное устройство и нажмите кнопку «Запустить» в верхнем левом углу Xcode. Код, который вы написали, и внешние фреймворки, которые вы разместили, будет автоматически вводить в файл IPA.
Я создал некоторый демонстрационный проект, который показывает, как использовать IPAPatch :
В: Библиотека не загружена с разумом: mach-o, but wrong architecture ?
Valid Architectures IPAPatch Target, чтобы соответствовать архитектуре вашего IPA Binary.Q: Запуск процесса не удался: не указано (отключено)?
Q: DYLD: символ не найден: XXX, ссылка на: xxx, ожидается в: xxx/libswiftxxx.dylib
Ipapatch лицензирован по лицензии MIT.
Copyright (c) 2017-present Wu Tian <[email protected]>.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Copyright (c) 2014, Alex Zielenski
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Copyright (c) 2013, Facebook, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name Facebook nor the names of its contributors may be used to
endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.