文章出自:听云博客
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://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,新建一个工程,如图:
我的工程干脆也叫libReveal。
工程建立了之后,我把Reveal.framework拖进来,再加一行log吧
编译,OK,dylib文件生产了。
拖拽过去,然后随便打开一个App试了试,不行,Reveal.App没有发现什么。嗯,我预料到了,不可能这么顺!
我仔细看了一下编译生产的这个libReveal.dylib文件,大小才150K,怎么这么小?
我想起来了,它嵌码不是“零代码”吗?“零代码”应该是利用了类加载机制,启动代码应该放在load或者initialize里,只要这个类被加载,就会执行到。
同时,还要保证这个类一定会被用到,这要用到Objective-c的category特性,很可能可能是对UIApplication做了category,这个我稍后分析一下就知道了。
如果要在动态库中使用了OC的category特性,必须在link时告诉连接器,否则category中的代码将不会被编译到dylib或者framwwork中(除非明确使用到)。添加连接参数:
再编译,出了六十多个错误,都是说xxx符号找不到,根据提示,把Foundition、UIKit、coreGraphics、QuartzCore、CFNetwork、libz加入进来(注意,Foundtion.framework本来就加进来了,需要删掉重新加进来,否则在8.0以前的iOS上不能运行,报告找不到NSNetService,这是个小坑)。
编译,通过!这回大小1.7M(支持armv7和arm64),在拖过去试了一下,大功告成!
最后,有两点必须说明:
1、plist文件,也就是libReveal.plist这个文件,它起过滤作用,或者说它决定你要研究那个App,你通过指定bundleId来决定哪个App/进程启动时,这个libReveal.dylib注入进去。
2、libReveal.dylib的危险性像springboard等系统进程,你不应该注入进去,否则可能会有危险。特别是,当libReveal.plist不存在时,相当于没有过滤,没有限制,所有进程都会被注入。我试过删除libReveal.dylib,真的不好玩,重启就完蛋了,最后的代价是重新刷机。
相关推荐
破解工具
Reveal.app-1.0.3破解版 IOSUI分析神器
最新1.5.1Reveal破解版,iOS真机UI调试利器,新增35大功能,去除试用时间限制。
"reveal.app"是一款强大的工具,专门用于解析开源iOS应用的结构,它可以帮助开发者直观地查看并理解应用的UI层次和控件关系。下面我们将详细探讨这款工具的功能、使用方法以及它在开发过程中的作用。 首先,"reveal...
Reveal.app是一款强大的第三方调试工具,它以其直观、高效的特点,极大地提升了开发者们调试界面布局与交互的能力。本文将深入探讨Reveal的使用方法、功能特性以及它如何帮助开发者提升工作效率。 首先,Reveal的...
总的来说,Reveal app 1.6.2是iOS开发工具箱中的一个必不可少的组件,它简化了UI调试过程,提高了工作效率,让开发者能更专注于创造出色的应用体验。通过压缩包中的"Reveal.app"文件,你可以直接安装并开始利用这个...
此外,reveal还支持自定义视图调试,使得第三方控件和复杂组件的调试变得轻而易举。 在reveal 14(10107)版本中,可能引入的新特性包括性能优化,更快的响应速度,以及更丰富的API支持,使得开发者可以通过编写...
Reveal在IT行业中通常指的是一个用于iOS和macOS应用调试和分析的工具,它允许开发者深入查看应用程序的UI结构,并进行实时调试。这款软件能够帮助开发人员更好地理解其应用程序的界面层次,以及如何与用户交互,从而...
Reveal是一款强大的第三方iOS UI界面调试工具,它为开发者提供了直观且高效的界面检查和调试能力。本文将详细介绍Reveal的功能、使用方法以及如何通过其免费版来提升开发效率。 首先,Reveal的突出特点在于它的实时...
iOS真机UI调试利器,只需用附件自带的license文件进行注册,即可与正版享用同样的功能
使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序的界面。它类似Chrome的“审查元素”功能,我们不但可以在运行时看到iOS程序的界面层级关系,还可以实时地修改程序界面,不用重新运行程序就可以看到修改...
在对iOS app进行安全分析时,为了了解app的整体框架,需要在app启动后,查看app的整体UI布局。...本文档详细介绍了如何使用Reveal查看任意app的UI布局,感兴趣的朋友可以下载下来看看,了解,了解。
iOS-UI分析利器--Reveal 在 iOS 开发中,我们有时很希望有一款类似 Web 开发中的 UI Debug 工具,让我们能够实时查看 UI 的结构,还可以实时更改某个 UIView 的位置和大小的相关属性值查看效果。这里我们发现原来真...
Reveal 是一款调试 iOS App UI 界面的工具, 配合 iPhone Cydia 安装 Reveal Loader (软件源: http://apt.so/codermjlee/) 使用
Reveal1.5超过35个新的功能,这是迄今为止最全面的软件更新。
Reveal作为分析APP UI的利器确实非常好用,用来查看任意UI布局也很方便
### Lattice Reveal逻辑分析仪使用指南:深入了解与实践 #### 概述 Lattice Reveal逻辑分析仪是Lattice Semiconductor公司为优化PLD(Programmable Logic Device)设计流程而推出的工具,集成在其PLD开发平台...
Reveal Inserter 部分包含有关如何向中添加调试信息到设计的信息,并提供了关于如何使用和设置在 Reveal 中使用的触发体系结构的详细信息。该基于触发单元和触发表达式的触发架构,与其他系统有一些不同,但为内部...
iOS UI调试利器,Reveal 1.5超过35个新的功能,这是迄今为止最全面的软件更新。,最新版,完美破解,新版对autolayout支持的更好,支持显示ViewController,下载运行即可