in iOS

iOS 使用 Flipboard / FLEX 分析第三方 App

FLEX 像是 Reveal 的移动版,但它可是开源免费的哦,用来 Debug view 很方便的呦~ 来张官网截图:

FLEX

看上去很好玩有木有!

下面blabla说了一堆,然后提到一句“Learning from Other Apps”,还放出了preview,却木有给出方法,让童鞋们自行摸索,这让我情何以堪啊……

Preview

好吧,自行摸索就自行摸索,哼╭(╯^╰)╮~

这货是如何运行的嘞?方法就是动态库注入。首先你需要越狱,然后通过越狱后提供的 MobileSubstrate 框架帮助我们加载动态库中的代码。so,我们来给 FLEX 做一个动态库 =。=~

注意:MobileSubstrate 是 iOS7.0 以后使用的加载方案,之前的旧版本可以利用环境变量 DYLD_INSERT_LIBRARY 来添加动态库(未测试)。

由于 XCode 默认不支持 iOS 动态库工程,需要我们自行配置文件支持,你需要按照这篇文章《Xcode4.6创建和使用iOS的dylib动态库》来修改配置。改好模板复制回去就算搞定了,我用的是XCode5.1,测试没有问题。

OK,现在开始进入正题啦,重启 XCode 后,我们新建工程libFlex,选择刚才配置好的Cocoa Touch Dynamic Library

将 Github 上的 FLEX 的代码导入项目中。

接下来在libFlex.m中添加如下代码:

编译,然后拷贝到真机:scp -r libFlex.dylib root@192.168.2.2:/Library/MobileSubstrate/DynamicLibraries

重启真机,或者 ssh 到真机执行命令:killall SpringBoard

现在你应该看到 FLEX 的工具条了,例如这样:

FLEX_dylib

它将会在每个 App 加载后动态载入显示,如果你不想这样,可以在/Library/MobileSubstrate/DynamicLibraries目录下新建同名配置文件libFlex.plist,使其在指定 App 中才会自动加载,例子如下:

其中填入的 BundlesID 可以在目标 App 根目录下的 iTunesMetadata.plist 文件中获取到。

参考

原创文章,采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
转载请注明:转载自 Tony's blog,原文网址:https://itony.me/774.html