close
当前位置: 物联网在线 > 技术文库 > ios >

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

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

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

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

IPAPatch 可以做什么呢?

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

过程简单

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

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

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

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

在 Youtube 中弹出自定义窗口

支持调试

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

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

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

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

使用 lldb 调试 Youtube

支持链接第三方 Framework

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

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

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

使用 Reveal 调试 Youtube

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

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

修改过的 Youtube 和 Facebook

怎么实现的?

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

解压 IPA 文件

用 IPA 文件的内容,替换掉 Xcode 生成的 .app 的内容

通过 OPTOOL,将你代码生成的 Framework 及其他外部 Framework,注入到二进制文件中

对这些文件进行重新签名 

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

具体的例子?

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

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

使用 Reveal 调试 Youtube

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

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

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

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

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

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

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

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

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

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

后记

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


(责任编辑:ioter)

用户喜欢...

Microchip新一代在线调试器问世,拥有无与伦比的速度和灵活性

MPLAB® ICD 4的处理器速度更快,RAM容量更大 Microchip Technology Inc.(美国微芯科技公司)日前发布MPLAB® ICD 4——Microchip的PIC®单片机和dsPIC®数字信号控制器系列产品的在线编程和调试开发工具。...


Zynq移植RT2870调试记录

最近在zynq上调试wifi,使用的是D_LINK的一款wifi,芯片是RT2870的。 在网上搜了些资料,参考了点击打开链接 这个博客,具体的内容我还是详细复制下吧。 无线网卡为RT3070,驱动分为STA驱动和...


调试神经网络让人抓狂?这有16条锦囊妙计送给你

作者:Andrey Nikishaev 即便对于行家来说,调试神经网络也是一项艰巨的任务。数百万个参数挤在一起,一个微小的变化...


STM32M CUBE实现printf打印调试信息以及实现单字节接收

在写单片机程序时我们一般喜欢使用printf来通过串口打印调试信息,但这个函数是不可以直接使用的,必须做点对库函数的改动。 详细工程下载地址: STM32M CUBE是ST官方提供的库以及初始化工...


UltraSoC推出业界首款用于ARM AMBA 5 CHI Issue B一致性架构的调试和分析解决方案

领先的嵌入式分析技术开发商UltraSoC日前宣布:全面推出用于ARM最近发布的AMBA 5 Coherent Hub Interface (CHI) Issue B规范的整...


P-NUCLEO-IHM001 电机开发板串口调试 指南

P-NUCLEO-IHM001 是一款功能强大,且小巧的针对永磁同步电机的开发板。本文介绍如何通过该套件上的虚拟串口来实现串口调试电机。 一 硬件连线 X-NUCLEO-IHM07M1 CN10-P35(PA2: TX) == NUCLEO-F302R8 CN3(TX...


FPGA开发要懂得使用硬件分析仪调试——ILA(1)

作者:浅搁 来源:FPGA2嵌入式微信公众号(微信号:fpga234) 0. ILA概述 在FPGA开发中,当我们写完代码,进行仿真,确定设计没有问题后,下载到硬件上一般都能按照我们的设计意愿执行相应...


Microchip新一代在线调试器问世,拥有无与伦比的速度和灵活性

Microchip Technology Inc.(美国微芯科技公司)日前发布MPLAB ICD 4——Microchip的PIC单片机和dsPIC数字信号控制器系列产品的在...


(译)Android:创建可穿戴应用 - 通过蓝牙进行调试

你可以通过蓝牙来调试你的可穿戴应用,通过蓝牙把调试数据输出到手持设备上,手持设备是有连接到开发电脑上的。 搭建好设备用来调试 开启手持设备的USB调试: 打开设置应用并滑动到底...


你是一个编写可调试代码的程序员吗?

所有的程序最好能够以某种形式的日志记录下来,这样能方便我们即时知道现在在做什么。而且一旦出现异常,其重要性就愈加明显了。我们之所以要把程序员分成三六九等,很大一个原因就...