Reveal的高级技巧

前言

Reveal(http://revealapp.com)是一个很强大的iOS View Hierarchy工具,与其他几个功能相近的工具比如PonyDebugger(https://github.com/square/PonyDebugger)和Spark Inspector(http://sparkinspector.com)相比,其最大的特点就是非常直观。在我们进行iOS开发时对于动态的或复杂的交互界面,手写UI是不可避免的,所以通过Reveal,我们可以方便地调试和修改应用界面,免去了每次修改代码后重新启动的痛苦。并且如果我们能够在他人的App中使用Reveal分析(在没有源码的情况下),无论对于开发人员还是UI设计师都无疑是一个很好的学习途径。

Reveal简介

Reveal类似于Chrome的“审查元素”功能和FireBug调试HTML页面功能,在不需要重写代码、重新构建和重新部署应用程序的情况下就能够调试和修改iOS用户界面,使我们不但可以在运行时看到iOS程序的界面层级关系,还可以实时地修改程序界面,看到修改之后的效果。

其常规用法是将framework集成至Xcode工程中,具体可参见Reveal的官网Reveal App但我们这次讲述的是非常规用法。

在12/21的#阿里技术嘉年华#上,展示了使用Reveal查看任意App的效果,估计是当时所展示的工具中最亮眼的一个。

准备工作

1. iOS越狱设备一台,这里使用的是太极越狱的iPod Touch 5,需在Windows(虚拟机也可)环境下操作。

1.1. 首先阅读太极越狱详细教程 http://www.taig.com/tutorial.html ,备份、设置好iOS设备。

1.2. 然后安装iTunes Setup。

1.3. 连接iOS设备后执行几步傻瓜操作后即可越狱。

2. 越狱后在iOS设备上会自动安装Cydia商店,

打开Cydia

先在TabBar的“变更”页面刷新软件源(如下图既已刷新成功,如果长时间不能成功刷新可以在App Store中下载Ark VPN app进行代理)

刷新成功后用Cydia搜索并安装OpenSSH,

搜索并安装Cydia Substrate(原名MobileSubstrate)

安装完成后点击重启springboard

3.安装Reveal,Trail或正式版都可以,Trail下载地址(http://pan.baidu.com/s/1qW1glK4),破解版下载地址(http://pan.baidu.com/s/1sjNySjz)下载后切记不要更新版本,解压后直接拖进“应用程序”里。

这里我们两个都安装上,先用Trail版配置文件,配置好后用破解版

4.安装iTools(2.3.3版),下载安装即可,切记不要升级版本,不然无法正常使用。下载地址(http://pan.baidu.com/s/1eQzyI8E)。

点击“跳过这个版本”

开始配置

1.建立连接

首先让越狱设备和Mac在同一个Wi-Fi内,进入越狱设备的“设置”->“无线局域网”,

点击网络后面的详情符号

进入详情页面,记下“IP地址”,即“192.168.1.241”

2.获取目标App的BundleId

用数据线连接好设备,打开iTools,找到目标App(我们这里以“掌上新东方”为例),

点击备份

等待打包

打包后的文件如图所示为 .ipa 文件,文件名 “com.xdf.palmXDF” 即为目标 App 的 BundleId 。

打包后的文件

3.创建plist文件

打开Xcode,新建一个空工程,然后新建一个Property List,命名为“libReveal”,如果是非开发人员,比如我们的UI设计师可以直接下载建好的plist文件,地址是(http://pan.baidu.com/s/1o69rQAm),打开后自己填写即可。

plist文件

所需操作如图所示

点击“Value”选项填写目标App的BundleId

4.将Reveal库文件拷贝到设备中

目的是将libReveal.dylib上传到设备的/Library/MobileSubstrate/DynamicLibraries

打开Mac上的Terminal(终端)

输入(IP地址修改后复制粘贴进终端即可):

scp -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework root@192.168.1.241:/System/Library/Frameworks

⚠注:删除线部分“192.168.1.241”改为自己的设备上的IP地址

输入“yes”

OpenSSH默认链接密码:alpine

等待上传Reveal库文件

上传完毕

接着输入:

scp -r/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib root@192.168.1.241:/Library/MobileSubstrate/DynamicLibraries

输入默认链接密码

接着输入:

scp -r libReveal.plist root@192.168.1.241:/Library/MobileSubstrate/DynamicLibraries

直接拖进终端内

拖入后的完整地址

配置结束

运行查看

首先保证设备和Mac在同一局域网(Wi-Fi)内,如果App已经运行,需在后台杀死进程重新打开,保持App在前台运行,然后在Mac中打开Reveal,

点击左上角的No Connection,然后选择“掌上新东方”

当设备上的App页面切换后,需要点击Reveal窗口右上角刷新按钮进行刷新(Commend+R),在局域网内负荷较大时,视图刷新会很慢,可以让设备共享热点给Mac来解决

界面主要部分

界面主要分为三部分:

1. 左边部分是整个界面的层级关系,在这里以树形层级的方式来查看全部界面元素。

2. 中间部分是一个可视化的查看区域,用户可以在这里切换2D盒3D的查看方式,这里看到的也是程序实运行的实时界面。

3. 右边部分是控件的详细参数查看区域,当我们选中某一个具体控件时,右边就可以显示该控件的具体的参数列表。我们除了可以查看这些参数列表是否正确外,还可以尝试修改这些值。所有的修改都可以实时翻反应到中间的预览区域内。

后话

以上是不写一行代码就能够查看任意App的方法,各位看别人App爽的时候,也可以想想自己的App。

这种“高级技巧”从来没有被Reveal官方提起过,大家一开始的方法比较粗暴,是直接hook想看的App,把libReveal.dylib插进去,后来经过进一步探索,才总结出这个更简单粗暴的方法。

虽然Reveal是最直观的一个工具,但是在iOS逆向这个领域,它占的比重连1/10都不到,相信大家都了解。

最后,这篇文档写的比较详细,是为了照顾非开发人员进行学习,不够简略之处希望大家理解

使用Reveal查看任意App的技巧相关推荐

  1. Reveal查看任意app的高级技巧

    本文转载至 http://blog.csdn.net/wbdwsqwwn/article/details/40476139 Reveal是一个很强大的UI分析工具,与其他几个功能相近的工具(比如Pon ...

  2. Reveal查看任意App界面以及解决由于Reveal版本更新导致的动态库文件过期的问题

    今天Reveal更新到了14(10107)版本.然而,本次更新改动了Reveal带的动态库文件. 首先,我来介绍一下Reveal如何查看任意App的界面. 1.首先,我们下载一个Reveal. 这个可 ...

  3. Reveal真机查看任意APP

    前言: 在Xcode开发时,可以使用Xcode自带的  Debug view  Hierarchy查看View布局,如下图 但是使用起来很麻烦,具体找某个view的时候,还有可能找不到,也不能动态的改 ...

  4. Reveal查看第三方app UI视图

    Reaveal + iPhone(越狱)分析app的UI视图结构(下图为网易新闻调试界面) 准备工作: 1.iPhone越狱,这里使用太极越狱,需在Windows下(虚拟机即可). 1.1.首先阅读太 ...

  5. android获取其他app布局,Android Studio查看其它APP的布局结构

    概述 日常使用别家的APP过程中,会遇到一些比较好看的布局,这时候我们就想学习一下别人的布局结构,以便参考. (1)手机连接电脑.设置手机为USB调试模式 (2)运行Android Studio,打开 ...

  6. 测试好工具fiddler,手机抓包,查看手机app请求了哪些接口

    领导让我接收一个项目,但是这个项目是安卓的,安卓我一窍不通,我们只做过web页面的.身为一个大数据程序员,要接手同事的项目,给我了代码,但是我完全不知道,这个代码对应,安卓机里面的那个功能. 但是安卓 ...

  7. web app开发技巧总结

    Web APP开发技巧总结 一.META/LINK相关: 1.百度禁止转码 通过百度手机打开网页时,百度可能会对你的网页进行转码,往你页面贴上它的广告,非常之恶心.不过我们可以通过这个meta标签来禁 ...

  8. iOS安全攻防(三):使用Reveal分析他人app

    使用Reveal分析他人app 准备工作 1)已越狱的设备,而且已安装了OpenSSH,MobileSubstrate等有用工具(Cydia源里安装) 2)本地已安装了Reveal 操作步骤 1)拷贝 ...

  9. centos so查看_照片信息查看器app安卓下载-照片信息查看器app下载v1.1.0 安卓版

    照片信息查看器app是一款超棒的照片查看类软件.完美的帮助你查看处理照片信息内容!方便简单的操作,快速的阅读功能,支持各种文件类型格式,了解最新图片的各种参数设置! 照片信息查看器app安卓应用介绍 ...

最新文章

  1. html画三个重叠的矩形,html5 实现两个矩形的叠加
  2. 微软 AI 设计原则:成为弱者,再带来惊喜
  3. TypeScript 里的 class field
  4. Linux 下的推迟执行
  5. Ubuntu16.06LTS安装gnome-3.8桌面
  6. Java 大对象类型的 Hiberante 映射
  7. ArrayList 源码分析(JDK1.8)
  8. 【mysql】【windows】MySQL 服务无法启动,服务没有报告任何错误,请键入 NET HELPMSG 3534 以获得更多的帮助。...
  9. 2022年计算机软件水平考试网络工程师(中级)练习题及答案
  10. 耳机煲机软件测试工资,耳机煲机有必要吗_耳机煲机正确方法
  11. vue 组件开发基本思路
  12. 云计算认证系列:CKA认证
  13. 小白学 Python 爬虫(14):urllib 基础使用(四)
  14. 机器人算法工程师入门指南(三)机器人算法工程师需要学习哪些知识?(及教材推荐)
  15. 计算机键盘排列方式,电脑上的键盘布局是怎么形成的?
  16. freeswitch实战六(呼叫转移)
  17. 铁路一线工人春运备战实录:深夜里的“钢铁工匠”
  18. Inno一个程序打包安装工具
  19. 深度学习CPU版本环境搭建(从anaconda->pycharm->tensorflow)
  20. java开发一个简单的通讯录

热门文章

  1. GSMS软件系统华为应急通讯完美版安装教程
  2. SCI影响因子及自然科学基金查询(MedSci)
  3. 怎样删除word文档中页眉的横线
  4. 加密算法之阮一峰大神博客摘抄
  5. java Set 遍历
  6. 深圳市联智计算机 交换式电源分配器,接线端子及采用该接线端子的电源分配器专利_专利查询 - 天眼查...
  7. torrent文件编码
  8. 联想服务器安装2003系统,联想服务器2003SERVER安装.doc
  9. java微信公众号开发教程_微信公众平台开发教程(java版本含代码) 中文PDF版 3.13MB...
  10. 用C语言编程网上购物系统,华中科技大学C语言课程设计报告 -- 网上购物管理系统.pdf...