`

用Reveal分析第三方App的UI

阅读更多

文章出自:听云博客

Reveal简介:

这是个神奇的工具,它能常透彻地分析个App的UI结构。

这个工具包括两部分,部分是在PC上运行的一个独立应用,即Reveal.app,另一部分代码在你要分析的某个App中,为此,Reveal提供了一个Framework和一个Dylib供使用。这两部分之间通过Bonjure这种零配置网络进行通讯。

官方地址:www.revealapp.com

 

基本使用:

Reveal.app的使用没有什么可说的,就是点击运行。关键是另一部分,怎么嵌入到App中。

我们自己的App都有源码,因此最简单的方式就是静态链接方式集成到App中。

关于基本使用,参考帮助中的“Integration Guide”,或者参考这些链接。

http://blog.csdn.net/yongyinmg/article/details/39293015

http://chuansong.me/n/1308113

http://blog.csdn.net/yiyaaixuexi/article/details/18220875

真正的需求

我弱弱的问一句:我自己的UI还需要用这个工具分析?有这个需求吗?

实际上,Reveal是一个逆向工程工具,主要是用来分析别人的App(的UI),说是学习也好、研究也好、剽窃也好,反正这个工具真正的价值和意义就是用于分析别人的App。

libReaveal.dylib的限制

要分析别人的App,需要用到libReveal.dylib,很可惜,1.5版本提供的dylib不支持ARM架构,也就是说,只能用于模拟器。搞了半天,还是只分析自己的App,Reveal,你啥意思?

其实早期版本的libReveal.dylib是支持ARM架构的,那时,只要把这个libReveal.dylib文件扔到手机的/Library/MobileSubstrate/DynamicLibraries/目录下,就OK了。后来为何不支持ARM架构了呢?我想这里面肯定发生了什么事,我想可能被投诉侵权了……想啥也没用,这个libReveal.dylib现在不好使了!

搜了一下,往前好几个版本都不支持ARM了,再早的,官方没的下载,据说也不能与新版的ReavealApp配合使用。

Reveal,你是不是有点尴尬?

自己做一个libReveal.dylib

别责怪Reveal了,其实人家啥都给了,不是有Reveal.framwwork吗?它可是模拟器和真机都支持的,如果你用它自己制作一个libReveal.dylib,支持ARM架构,用来分析别人的App,那么……“后果自负”,这绝对是Reveal的意思。

哈哈〜~不就是一个越狱插件吗,这个容易,附件就是我做的。制作过程也有点小坑,所以也贴出来吧。

(这需要the os或者iOSOpenDev,正好我已经装了iOSOpenDev)

打开xcode,新建一个工程,如图:                      3331.png                          

我的工程干脆也叫libReveal。

工程建立了之后,我把Reveal.framework拖进来,再加一行log吧3332.png

编译,OK,dylib文件生产了。

拖拽过去,然后随便打开一个App试了试,不行,Reveal.App没有发现什么。嗯,我预料到了,不可能这么顺!

我仔细看了一下编译生产的这个libReveal.dylib文件,大小才150K,怎么这么小?

我想起来了,它嵌码不是“零代码”吗?“零代码”应该是利用了类加载机制,启动代码应该放在load或者initialize里,只要这个类被加载,就会执行到。

同时,还要保证这个类一定会被用到,这要用到Objective-c的category特性,很可能可能是对UIApplication做了category,这个我稍后分析一下就知道了。

如果要在动态库中使用了OC的category特性,必须在link时告诉连接器,否则category中的代码将不会被编译到dylib或者framwwork中(除非明确使用到)。添加连接参数:3333.png

再编译,出了六十多个错误,都是说xxx符号找不到,根据提示,把Foundition、UIKit、coreGraphics、QuartzCore、CFNetwork、libz加入进来(注意,Foundtion.framework本来就加进来了,需要删掉重新加进来,否则在8.0以前的iOS上不能运行,报告找不到NSNetService,这是个小坑)。                                         1234.png                                

编译,通过!这回大小1.7M(支持armv7和arm64),在拖过去试了一下,大功告成!

最后,有两点必须说明:

1、plist文件,也就是libReveal.plist这个文件,它起过滤作用,或者说它决定你要研究那个App,你通过指定bundleId来决定哪个App/进程启动时,这个libReveal.dylib注入进去。

2、libReveal.dylib的危险性像springboard等系统进程,你不应该注入进去,否则可能会有危险。特别是,当libReveal.plist不存在时,相当于没有过滤,没有限制,所有进程都会被注入。我试过删除libReveal.dylib,真的不好玩,重启就完蛋了,最后的代价是重新刷机。

 

原文链接:http://blog.tingyun.com/web/article/detail/262

0
1
分享到:
评论

相关推荐

    Reveal.app.zip

    Reveal.app是一款强大的第三方调试工具,它以其直观、高效的特点,极大地提升了开发者们调试界面布局与交互的能力。本文将深入探讨Reveal的使用方法、功能特性以及它如何帮助开发者提升工作效率。 首先,Reveal的...

    reveal 14(10107)

    此外,reveal还支持自定义视图调试,使得第三方控件和复杂组件的调试变得轻而易举。 在reveal 14(10107)版本中,可能引入的新特性包括性能优化,更快的响应速度,以及更丰富的API支持,使得开发者可以通过编写...

    iOS Reveal-11340.zip

    7. **第三方库支持**:Reveal不仅适用于原生的UIKit,还可以与许多第三方库集成,如React Native和Flutter,为跨平台开发提供便利。 8. **自定义视图查看**:对于自定义视图,Reveal可以提供定制的查看器,使开发者...

    intel appframework3.0测试版 jqmobi3.0测试版

    现在我们要改为利用系统自有的滚动支持( native scrolling)和使用成熟的第三方的插件。下面是App Framework 3.0中的主要变化: 我们不在维护自己的选择器库(query selector library),我们建议使用 jQuery。 ...

    ios逆向工具汇总

    而在越狱设备上,Reveal具备更强大的功能,能够查看和调试任意第三方应用的UI结构。Reveal工具允许开发者以直观的方式检查和修改应用的界面层级和布局。 IDA(Interactive Disassembler)是一款广泛使用的反汇编...

    iOS静态inline hook

    静态内联HOOK的常见实现方法包括使用汇编语言、C/C++的预处理器宏以及第三方库,如Xcode插件FLEX或Reveal。 #### 3.1 汇编实现 通过编写汇编代码,可以直接修改函数的跳转指令,将控制流导向hook函数。 #### 3.2 ...

    iOS14.0正式版-真机调试

    同时,配合Xcode的Live Views和Reveal等第三方工具,可以实时查看和调整UI布局,提高调试效率。 总之,iOS14.0的真机调试涉及了系统更新带来的新特性测试、开发者环境的配置、应用的部署与运行、调试工具的使用等多...

    YourView:YourView是MacOS中基于Apple SceneKit的桌面应用程序。 您可以使用它来查看iOS App的视图层次3D

    标签中提到的"reverse engineering"(逆向工程)意味着YourView可能还具备分析已安装应用的能力,这在调试第三方应用或者研究其他应用的设计时非常有用。"ui-testing"则强调了YourView在自动化UI测试中的潜在作用,...

Global site tag (gtag.js) - Google Analytics