IPAPatch: 免越狱调试、修改第三方App-阿里云开发者社区

开发者社区> 小旋风柴进> 正文

IPAPatch: 免越狱调试、修改第三方App

简介:
+关注继续查看

之前在 GitHub 上开源了关闭 Facebook for iOS 的 HTTPS 证书校验的方法 (Naituw/HackingFacebook),收到了很多反馈,大部分都集中在操作的过程太复杂的问题上。其实我自己在后来修改其他 App 的过程中也察觉,调试、验证问题的过程中,操作太过繁琐。


因此我又对这个方向做了进一步的尝试,最后 IPAPatch 诞生了~

源代码

我已经把模版工程放在了 GitHub 上了,欢迎大家提 Issue~

https://github.com/Naituw/IPAPatch

另外还包含一个 Demo

https://github.com/Naituw/IPAPatch/releases


IPAPatch 可以做什么呢?

和 "HackingFacebook" 类似,"IPAPatch" 主要可以在第三方的 IPA 文件上 "添加" 自己的代码,但过程有很大不同:


过程简单

提供 IPA 文件和你的代码,配置好签名信息,点击“运行”即可

整个过程在 Xcode 中进行,就像在编写自己的 App

IPA 文件依然需要是解密过的

在 Youtube 中弹出自定义窗口


支持调试

在 Xcode 中可以直接断点进行调试

可以用 lldb 命令(如 po),输出运行时信息

可以使用 Xcode 的调试功能查看 View Hierarchy、Memory Graph 等信息

使用 lldb 调试 Youtube


支持链接第三方 Framework

在集成一些第三方服务时很有用

例如之前发微博的 Reveal 调试 Youtube 就是这种方式

使用 Reveal 调试 Youtube


修改过的 App 可以与原始 App 共存,并自动修改名字以作区分

修改过的 Youtube 和 Facebook


怎么实现的?

主要的自动化过程在 patch.sh 这个脚本里,Xcode 会在把你的代码编译成 Framework 后执行这个脚本:

  1. 解压 IPA 文件
  2. 用 IPA 文件的内容,替换掉 Xcode 生成的 .app 的内容
  3. 通过 OPTOOL,将你代码生成的 Framework 及其他外部 Framework,注入到二进制文件中
  4. 对这些文件进行重新签名 


完成后,Xcode 会自动将修改过的 .app 安装到 iPhone 上


具体的例子?

之前发过一个 “iOS 10.3 使用 Reveal 调试 Youtube” 的微博,我就用这个来举例吧。

使用 Reveal 调试 Youtube


1. 首先我们需要准备一个解密过的 Youtube IPA 文件,这个文件可以从越狱手机上导出,也可以直接去网站下载,比如我自己常用的是 iphonecake.com

2. 将 IPA 文件命名为 app.ipa,替换模版工程中的 Assets/app.ipa 文件

3. 打开 Reveal,拿到需要集成的 Framework 文件 



4. 将 RevealServer.framework 放置在 Assets/Frameworks/RevealServer.framework

5. 打开 IPAPatch,在 IPAPatch-DummyApp 这个 Target 里,配置好 BundleID 和代码签名。Display Name 会作为前缀添加到原来的 App 上,如图配置的话最后就是 "RevealYoutube" 


6. 点击 Xcode 左上角的编译运行按钮,修改好的 Youtube 就会安装到手机上,Reveal 中也能找到 




我把这个 Demo 打了一个包,传到 GitHub 的 Release 中了,大家可以自行下载尝试~

https://github.com/Naituw/IPAPatch/releases


后记

其实做这个项目的起因,并不是想要对其他 App 进行修改,而是在竞品分析时,想尽可能了解其他 App 是如何实现类似需求的。 然后发现其实我们还能做到比抓包更进一步,对我自己很有用,所以也分享给大家~

最后还是想说一句,该项目仅用于学习目的,请勿滥用~


项目地址:https://github.com/Naituw/IPAPatch 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
4152 0
第八章 让Bootstrap轮播插件carousel支持左右滑动手势的三种方法
因为最近开发的项目涉及到移动设备上的 HTML5 开发,其中需要实现轮播效果。然后最快捷的方式,你知道的(Bootstrap),然后原生的 Bootstrap 的 carousel.js 插件并没有支持手势。
1060 0
[转]读取并修改App.config文件
1. 向项目添加app.config文件: 右击项目名称,选择“添加”→“添加新建项”,在出现的“添加新项”对话框中,选择“添加应用程序配置文件”;如果项目以前没有配置文件,则默认的文件名称为“app.config”,单击“确定”。
625 0
如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段
假设我想修改S/4HANA里Sales Order抬头的Service Date字段SERV_DATE: 首先从数据库表VBKD里查找到SERV_DATE修改之前的值为2020年1月1日 使用如下代码,将这个字段的值改成2020年1月2日。
1211 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4623 0
C# Windows Phone App 开发,修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。
原文:C# Windows Phone App 开发,修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。 一般我们在开发Windows Phone App,有时会希望透过应用程式来改变锁定画面,但是锁定画面的设定有时会发生非常吊诡的现象,譬如锁定画面只会在第一次设定的时候成功,第二次之後全数失败,而且没有发生任何错误,这究竟是为什麽呢?! ? 本篇文章将引导您修改【锁定画面】,从【Assets】、【UI】、【网路图片】,并解决失灵问题。
969 0
iOS - CocoaPods 第三方开源框架管理
1、CocoaPods CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPods 的项目源码在 Github 上管理。该项目开始于 2011 年 8 月 12 日,在这两年多的时间里,它持续保持活跃更新。
1132 0
JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
基本原理: JDK6u10版本以上提供了DeskTop的API接口支持,可以根据URI参数自动打开 操作系统默认的浏览器来加载对应的网页,同时借助JDK的Robot类实现自动截屏 这样就完成了对任意一个URL对应网页保存为图片。
921 0
2728
文章
6591
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载