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

作者: kakukeme | 来源:发表于2017-03-22 15:19 被阅读781次

    原文地址:​​http://weibo.com/ttarticle/p/show?id=2309404086977153611942

    之前在 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 中弹出自定义窗口

    在 Youtube 中弹出自定义窗口

    • 支持调试
      • 在 Xcode 中可以直接断点进行调试
      • 可以用 lldb 命令(如 po),输出运行时信息
      • 可以使用 Xcode 的调试功能查看 View Hierarchy、Memory Graph 等信息
    使用 lldb 调试 Youtube

    使用 lldb 调试 Youtube

    • 支持链接第三方 Framework
      • 在集成一些第三方服务时很有用
      • 例如之前发微博的 Reveal 调试 Youtube 就是这种方式
    使用 Reveal 调试 Youtube

    使用 Reveal 调试 Youtube

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

    修改过的 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

    使用 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 是如何实现类似需求的。
    然后发现其实我们还能做到比抓包更进一步,对我自己很有用,所以也分享给大家~

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

    ​​​​

    相关文章

      网友评论

      • 33a231292dbe:你好,我注入代码后重新打包,发现包体只有十几K啊,
        33a231292dbe:@kakukeme 你会用MonkeyDev注入代码到IPA文件中,然后重新打包吗
        kakukeme:@人生何处不修行 IPAPatch 很少用了,使用MonkeyDev了;
      • ParsonsYang:The file “IPAPatch-DummyApp” couldn’t be opened because you don’t have permission to view it.
        You don’t have permission.
        请问这个怎么解决啊

      本文标题:​​IPAPatch: 免越狱调试、修改第三方App

      本文链接:https://www.haomeiwen.com/subject/noponttx.html