O iPapatch fornece uma maneira simples de corrigir aplicativos iOS, sem precisar de jailbreak.
[Recursos • Instruções • Exemplo • FAQ • Licença]
O iPapatch inclui um projeto Xcode modelo, que fornece os seguintes recursos:
Construa e execute o IPA de terceiros com seu código injetado
Você pode executar seu próprio código dentro do arquivo IPA como uma biblioteca dinâmica. Assim, você pode alterar o comportamento desse aplicativo utilizando o Objective-C Runtime.
Apresentou um alerta personalizado no aplicativo do YouTube
Depuração passo a passo com LLDB
Você pode depurar aplicativos de terceiros como os seus. Por exemplo:
Depuração do YouTube com Xcode
Vincular estruturas externas
Ao vincular estruturas existentes, você pode integrar serviços de terceiros a aplicativos com muita facilidade, como a revelação.
Inspecione o YouTube por Linking RevelServer.Framework
Gerar arquivos .ipa distribuíveis
Você pode distribuir seu patch/trabalho aos seus amigos com muita facilidade, com a versão modificada gerada pelo iPapatch de arquivos .ipa
Versão modificada do Facebook.ipa criada por iPapatch
Clone ou baixe este projeto
Baixe este projeto para o seu disco local
Prepare o arquivo IPA descriptografado
O arquivo IPA que você usa precisa ser descriptografado, você pode obter um IPA descriptografado de um dispositivo de jailbreak ou baixá -lo diretamente de um site de download da IPA, como http://www.iphonecake.com
Substitua o espaço reservado IPA
Substitua o arquivo IPA localizado em IPAPatch/Assets/app.ipa com o seu, este é um arquivo de espaço reservado. O nome do arquivo deve permanecer app.ipa após a substituição.
Coloque recursos/estruturas externas (opcional)
Seguir os tipos de arquivo externo são suportados:
IPAPatch/Assets/Frameworks .IPAPatch/Assets/Frameworks/RevealServer.frameworkIPAPatch/Assets/Dylibs .IPAPatch/Assets/ResourcesDefinir configurações de construção
IPAPatch.xcodeprojIPAPatch-DummyAppDisplay Name dos padrões para "?", Isso é usado como prefixo do nome da tela final.Bundle Identifier para corresponder aos seus perfis de provisionamentoConfigure as opções do iPPATCH
Você pode configurar o comportamento do iPapatch com Tools/options.plist
| Nome | Descrição | Padrão |
|---|---|---|
| Restaure_symbols | Quando YES , o iPapatch tentará restaurar a tabela de símbolos de mach-o para depuração proposta (com ferramentas de https://github.com/tobefuturer/restore-symol, também graças a @henrayluo e @dannion) | NÃO |
| Create_ipa_file | Quando YES , o iPapatch gerará um arquivo IPA em cada compilação. O arquivo genratado está localizado em SRCROOT/Product | NÃO |
| Ignore_ui_supportd_devices | Quando YES , o iPapatch excluirá UISupportedDevices do Info.plist do aplicativo de origem | NÃO |
| Remover_watchplaceholder | Quando YES , o iPapatch removerá a pasta com.apple.WatchPlaceholder do pacote do aplicativo de origem | SIM |
| Use_original_entitlements | Quando YES , o iPapatch usará os direitos do aplicativo de origem para renunciar, você precisa garantir que seu perfil de provisionamento corresponda aos direitos ou precisa desativar AMFI no dispositivo de destino | NÃO |
Codifique seu patch
A entrada está em +[IPAPatchEntry load] , você pode escrever o código Iniciar aqui. Para alterar o comportamento dos aplicativos, pode ser necessário usar alguma biblioteca de swizzling de método, como Steipete/Aspects.
Construir e correr
Selecione um dispositivo real e pressione o botão "Executar" no canto superior esquerdo do Xcode. O código que você escreveu e as estruturas externas que você colocou injetará no arquivo IPA automaticamente.
Criei algum projeto de demonstração, que mostra como usar IPAPatch :
P: Biblioteca não carregada com a razão: mach-o, but wrong architecture ?
Valid Architectures do IPAPatch Target para corresponder à arquitetura do seu Binário IPA.P: O lançamento do processo falhou: não especificado (desativado)?
P: Dyld: Símbolo não encontrado: xxx, referenciado de: xxx, esperado em: xxx/libswiftxxx.dylib
O iPapatch está licenciado sob a licença do 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.