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 

时间: 2024-10-31 13:35:32

IPAPatch: 免越狱调试、修改第三方App的相关文章

iOS逆向工程之Hopper+LLDB调试第三方App

LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理,因为debugserver缺少task_for_pid权限,所以你只能使用LLDB来调试你自己的App.那么本篇博客中就要使用LLDB来调试从AppStore下载安装的App,并且结合着Hopper来分析第三方App内部的结构.LLDB与Hopper的结合,会让你看到不一样的东西,本篇博客就会和你

【阿里聚安全·安全周刊】阿里安全潘多拉实验室完美越狱iOS11.2.1|Janus漏洞修改安卓app而不影响签名

关键词:阿里安全潘多拉实验室丨Janus漏洞丨御城河丨编程语言出现漏洞丨APP追踪定位丨银行APP存在漏洞丨安卓统一推送联盟|AhMyth RAT|HP笔记本 本周资讯top3 [越狱苹果]独家探寻阿里安全潘多拉实验室,完美越狱苹果iOS11.2.1 知道如何从攻击的视角去发现漏洞,才能建立更安全的体系,促进了整个生态的良性发展.以阿里安全潘多拉实验室为例,在对移动系统安全研究的过程中,把研究过程中发现的问题上报给厂商,促进系统安全性的提升.此次攻破苹果iOS11.2.1的重要成员之一龙磊,已向

如何修改安卓app图标问题

问题描述 如何修改安卓app图标问题 android:icon="@drawable/icon" 这个方法只能修改桌面图标,我想要的效果是在360手机助手上也显示修改图标 解决方案 APP 图标修改问题如何在安卓app中使用FontAwesome图标如何在安卓app中使用FontAwesome图标

javascript-chrome调试修改js怎么保存?

问题描述 chrome调试修改js怎么保存? 参照下图: 改css可以实时预览,改js怎么保存,实时预览呢 解决方案 在Console 里面执行 解决方案二: 去控制台,就是Console那个选项卡输入js代码执行 解决方案三: chrome调试动态加载的JSchrome调试jschrome中调试js

powermanager-Android第三方App如何调用PowerManager.gotosleep()实现睡眠。

问题描述 Android第三方App如何调用PowerManager.gotosleep()实现睡眠. 如题,Android第三方应用调用PowerManager.gotosleep()是总是出错,权限不够,请问怎样才能实现第三方App调用这个方法实现睡眠? 解决方案 这个只有系统应用才有这个权限的,你可以使用其他的方法,比如:调用DevicePolicyManager的lockNow()方法 解决方案二: 已经实现了,确实是调用DevicePolicyManager的lockNow()方法实现

代码-webapp如何向第三方app软件pritershare传递参数

问题描述 webapp如何向第三方app软件pritershare传递参数 我做了一个简单的webapp.现需要实现该webapp调用第三方pritershare软件.目前已能调用打开该软件,但无法将参数传递给pritershare实现打印. 有无熟悉类似应用的同学,说说思路. 或者私信我,帮我写一段代码实现上述功能,报酬详谈.qq:56289110

Android实现使用微信登录第三方APP的方法_Android

本文实例讲述了Android实现使用微信登录第三方APP的方法.分享给大家供大家参考,具体如下: 使用微信登录APP,免去注册过程,现在已经有很多的类似应用了.集成该功能过程不复杂,但还是有一些地方需要注意的. 开始之前,需要做下面的准备工作. 1.到微信开放平台注册你的APP,并申请开通微信登录的权限.参考这里: https://open.weixin.qq.com// 2.下载Android SDK和签名查看工具,请参考: https://open.weixin.qq.com/cgi-bin

develop-iOS第三方APP能不能做出这种桌面背景实时毛玻璃的效果?

问题描述 iOS第三方APP能不能做出这种桌面背景实时毛玻璃的效果? 解决方案 主要是性能问题,如果你的背景不是每一秒都在变化,而只是某些时候才发生变化的话,可以在特定时候更新毛玻璃背景就好了 静态毛玻璃的例子网上有很多,如果你希望实时更新,那就比较困难了,第三方app基本都是静态毛玻璃,只是看上去像是动态的 如果用系统的api也有系统版本和设备的限制.除非你不考虑兼容问题 解决方案二: iOS8以上支持的较好.有些效果要在真机才能用.

app-android 淘宝账号登陆第三方APP实现流程。

问题描述 android 淘宝账号登陆第三方APP实现流程. 因项目需要,现在需要做淘宝账号登陆第三方APP.看了淘宝开发帮助文档之后,更是满头疑问.哪位帮忙给梳理一下淘宝账号登陆第三方APP流程.有源码更佳.谢了 解决方案 http://blog.chinaunix.net/uid-25528943-id-3127111.html