IPAPatch + UIDebuggingInformationOverlay, IPAPatch + FLEX 和 IPAPatch + Reveal 免越狱查看第三方App

目录

一、UIDebuggingInformationOverlay
1、View Hierarchy
2、VC Hierarchy
3、Ivar Explorer
4、Measure
5、Spec Compare
6、System Color Audit
二、IPAPatch
1、IPAPatch 和 UIDebuggingInformationOverlay
2、IPAPatch 和 Reveal
3、IPAPatch 和 FLEX


端午假期前一天,微博上的iOS圈被@图拉鼎的一条微博刷了屏

原博

之后@Naituw对于该微博的转发更是引发了我的兴趣(学艺不精,却爱瞎折腾🤣),所以长假过后我简单看了一下,现在总结一下自己的心得,以飨同好(这个词似乎是应该用在引用别人的作品时🤣)。

@Naituw的转发


1、UIDebuggingInformationOverlay

言归正传,UIDebuggingInformationOverlay是一个系统的调试界面,只需将几句简单的代码放入AppDelegate-application:didFinishLaunchingWithOptions:即可唤出(提交审核的版本中请勿添加,可能会因此被拒)。代码如下:

Objective-C

id debugClass = NSClassFromString(@"UIDebuggingInformationOverlay");
[debugClass performSelector:NSSelectorFromString(@"prepareDebuggingOverlay")];

id debugOverlayInstance = [debugClass performSelector:NSSelectorFromString(@"overlay")];
[debugOverlayInstance performSelector:NSSelectorFromString(@"toggleVisibility")];
Swift

let overlayClass = NSClassFromString("UIDebuggingInformationOverlay") as? UIWindow.Type
_ = overlayClass?.perform(NSSelectorFromString("prepareDebuggingOverlay"))
let overlay = overlayClass?.perform(NSSelectorFromString("overlay")).takeUnretainedValue() as? UIWindow
_ = overlay?.perform(NSSelectorFromString("toggleVisibility"))

如果隐藏了这个视图,只需再用两个手指同时点击手机的status bar就可以再次唤出了。

唤出的初始页面

从上图可以看出有6个选项,我们根据国外原文的描述分别简单翻译一下。


1、View Hierarchy

罗列选中Window的Views,可以点击View查看View的细节,从frame到实例变量,在同时有多个window的时候还可以切换查看。

切换到UIStatusBarWindow查看

2、VC Hierarchy

View Hierarchy类似,VC Hierarchy会展示VC的层次,在这个菜单里可以查看VC包括ControllerView在内的一些细节。

3、Ivar Explorer

这个选项可以查看UIApplication实例的属性们。重要的是,所有对象变量都可以找到。

可以通过AppDelegate实例一直查找下去

4、Measure

可以测量出控件元素的横向或纵向的尺寸(以pt计)。�

5、Spec Compare

功能是读取相册的图片和当前界面对比。
这个功能千万不能被较真的PM发现!!!
这个功能千万不能被较真的PM发现!!!
这个功能千万不能被较真的PM发现!!!

  1. Add
  • 从相册选择1张图片,点击图片
  • 手指在屏幕上『上下滑动』调整选图的透明度来对比和当前界面的差异
  • 双击退出


6、System Color Audit

没能发现那几个空白的cell是做什么用的Orz


2、IPAPatch

UIDebuggingInformationOverlay小玩了一把之后,实际体验感觉并没有Flipboard推出的Flex强大,优势是调用极其方便。所以我对@NaituwIPAPatch: 免越狱调试、修改第三方App更感兴趣,不越狱用Reveal查看第三方App,这就是我一直想要的功能啊🤣。

IPAPatch的使用方法,@NaituwIPAPatch: 免越狱调试、修改第三方App一文中已经写的很清楚了,我只能算是越俎代庖。

1、IPAPatch 和 UIDebuggingInformationOverlay

我们先尝试成功运行@NaituwIPAPatch: 免越狱调试、修改第三方App文章末尾提到的Demo,下载解压,在IPAPatch-DummyApp这个Target里,配置好 BundleID 和代码签名,连接手机编译运行。

配置IPAPatch-DummyApp这个Target 的 BundleID 和代码签名——Naituw原文配图

只在Demo基础上修改了签名,成功运行
运行到真机上

将上文的代码拷贝到IPAPatchEntry.mm文件中的+load方法中,再次运行。

2、IPAPatch 和 Reveal

这次我们置换一下要打包安装的App,按照@NaituwIPAPatch: 免越狱调试、修改第三方App的步骤

  1. 首先我们需要准备一个解密过的 Youtube IPA 文件,这个文件可以从越狱手机上导出,也可以直接去网站下载,比如我自己常用的是 iphonecake.com
  1. 将 IPA 文件命名为 app.ipa,替换模版工程中的 Assets/app.ipa 文件

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

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

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

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

  6. 我先去下了一个解密过的 QQ IPA 文件(@Naituw常用的AppCake上多是国外应用)

  7. 重命名为 app.ipa,替换模版工程中的 Assets/app.ipa

  8. 编译运行,Bingo!


  9. 将 Reveal App 目录下的 RevealServer.framework 放置在模版工程中的 Assets/Frameworks/RevealServer.framework

  10. 编译运行,确保 iPhone 和 Mac 在同一 WiFi 下,打开Reveal,Bingo!



3、IPAPatch 和 FLEX

Flipboard/FLEX相比UIDebuggingInformationOverlay还要强大得多,UIDebuggingInformationOverlay的优点可以看下图。

下面我们尝试用 IPAPatch 来集成 FLEX,来查看第三方App的网络请求、系统log、堆对象、沙盒文件、Cookies、UserDefaults、UIApplication、UIScreen、UIDevice等信息。

  1. 从 GitHub 下载Flipboard/FLEX,解压,打开FLEX.xcworkspace

  2. Build Flex 这个 project,去 Finder 中获取 Flex.framework,拷贝到模版工程中的 Assets/Frameworks/


  3. Flex.framework拖到IPAPatch工程中,以供代码引用

  4. 新增UIWindowFlexSetting分类,功能是在晃动手机时唤出FLEX调试视图,代码如下

//  UIWindow+FlexSetting.h

#import <UIKit/UIKit.h>

@interface UIWindow (FlexSetting)

@end


//  UIWindow+FlexSetting.m

#import "UIWindow+FlexSetting.h"

#if DEBUG
#import "FLEX/FLEXManager.h"
#endif

@implementation UIWindow (FlexSetting)

#if DEBUG

- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    [super motionBegan:motion withEvent:event];
    if (motion == UIEventSubtypeMotionShake) {
        [[FLEXManager sharedManager] showExplorer];
    }
}
#endif

@end

  1. 编译运行,Bingo!




至此,本文内容已告完成。我们尝试了用IPAPatchUIDebuggingInformationOverlayRevealFLEX三者进行配合,在研究学习第三方App的时候,我们大可将这几个工具放到一起,充分发挥这些工具的作用!

看完全文,不难发现本文主角是IPAPatch,这里安利一发IPAPatch作者@Naituw的免费Maipo - 全功能新浪微博 macOS 客户端体验非常棒,配合手机端的奇点墨客疗效显著!

最后一记自发安利,@onevcat同样推荐的泊学 - 一个全栈工程师的自学网站,一手 Swift 视频学习资料!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容