今天博客内容比较简单,不过还是蛮重要的。经常有小伙伴在QQ上私下问我,说博客中是如何使用Reveal查看AppStore中下载应用的UI层级的,那么就在今天这篇博客中作为一个主题来统一的介绍一下吧。虽然网上相关资料一抓一大把,不过还是有必要详细的总结一下的。

还是那句话,“工欲善其事,必先利其器”,在之前的多篇博客中不止一次用到这个强大的分析工具Reveal,之前我们用它来查看自己App以及从AppStore中下载的App的UI层级,效果都是非常不错的。Reveal在逆向工程中不仅仅是用来查看UI层级的,它可以帮你定位问题。比如举个简单的例子,假如你想在某个App的某个页面弹出一个Alter,那么Reveal会很轻松的帮你找到这个页面以及相关的类。

好了,废话少说,今天博客的主题就是如何在越狱环境下配置和使用Reveal来查看App的UI层级。Reveal for Mac版可以从Reveal官网上下载,不过只能试用30天。你也可以从网上直接下载破解版的Reveal。如果你想搞的有意思点,使用Hopper自己去破解官方的Reveal,网上有使用Hopper来修改Reveal汇编,破解Reveal的教程,亲试有效。使用Hopper破解Reveal的不做请移步于“Reveal破解链接”,在当前最新版本1.6.3是有效的。本篇博客中所使用的Reveal 1.6.3就是使用Hopper进行破解。当然,这不是今天的主题,今天的主题是如何使用Reveal。

当然今天博客中所涉及的内容是在越狱手机上进行的,如何使用Reveal在未越狱的手机上查看你自己的App的UI层级,请自行Google,在此就不做过多赘述了。

一、在越狱设备上配置Reveal

下方的内容是基于越狱的设备操作的,设备的系统版本为iOS9.2.1 越狱版。

1. Reveal Loader安装

首先我们打款越狱设备的Cydia,然后在搜索中输入Reveal Loader,并且进行安装即可,下方是安装后的效果。这一步比较简单,安装后重启SpringBoard即可。

  

2.导入libReveal.dylib

这一步也是比较关键的一步,安装完上述的Reveal Loader后请查看是否有/Library/RHRevealLoader这个文件夹,并且确定该文件夹中是否有libReveal.dylib这个文件,如果有的话,请跳过这一步,如果没有,那么就往下看吧。

(1)操作越狱设备文件所需的工具

当然,本部分需要对越狱设备中的文件系统进行操作,并且将Mac上的文件夹导入到设备中。当然你可以使用OpenSSH来连接你的设备,但是要是将Mac中的文件导入到越狱设备相应的文件夹中,还是使用下方的可视化工具更直观一些。

下方是我本地装的两个工具,当然其中任何一个都可以操作iOS设备的文件系统,不过iExplorer这个工具的功能更强大一些。iExplorer可以查看你的Mac上所有iOS设备的备份文件,当然也包括非越狱设备的备份文件。

  

(2)libReveal.dylib

我们Mac上的Reveal自带了两个库,一个是libReveal.dylib,一个是Reveal.framework。在未越狱的设备上使用库是后者,本篇博客中使用的是前者。这两个文件位于Reveal中的iOS Library中。Reveal菜单->Help->Show Reveal Library in Finder ->iOS Library。通过上述目录就可以找到我们需要的文件,当然本篇博客中我们只需要libReveal.dylib这一个文件。

  

找到上述的libReveal.dylib文件后,使用IExplorer拷到我们的设备中相应的目录下即可。如下所示。

  

至此,我们的Reveal配置工作就结束了,接下来就是使用Reveal来做一些事情了。

二、Reveal的使用

1.在设备上选择可以Reveal的App

我们在越狱设备上安装完Reveal Loader后就可以在设置中找到Reveal的配置项,在该配置项中我们可以去选择要Reveal的App, 当然对于越狱手机,手机上安装的所有App都可以Reveal。当然也包括从AppStore下载的,也包括iOS系统自带的。如下所示:

    

2.查看系统App"股市"的UI层级

上面Reveal的配置工作就以及配置好了,接下来的时间就是Reveal的使用时间了。Mac上Reveal查看设备上App的UI层级时是不需要使用USB进行连接的,但要保证你的iOS设备与你的Mac在同一个局域网内。下方这个截图就是我在使用Reveal时的一个截图,DecoupleDemo on 呵呵(iOS 9.3.2)这个设备是我一个同事的,当然他的手机是未越狱的设备,不过他的App中引入了Reveal.framework这个包,所以我在这边也是可以看到的。下方是我的越狱设备,当然这个“股市”App是iOS系统自带的App, 接下来就看一下如何去使用Reveal在越狱设备上来查看第三方App的UI层级。

  

在上方截图中,我们点击下方的股市这条就可以Reveal“股市”这个App了。下方就是“股市”这App的UI层级图。

  

经过上述步骤,Reveal就可以正常工作了,至于如何让Reveal的功能发挥到极致,那么还得看使用的人呢。今天博客就先到这儿。

iOS逆向工程之Reveal工具的安装、配置与使用的更多相关文章

  1. iOS逆向工程之App脱壳

    本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解 ...

  2. iOS逆向工程之KeyChain与Snoop-it

    今天博客的主题是Keychain, 在本篇博客中会通过一个登陆的Demo将用户名密码存入到KeyChain中,并且查看一下KeyChain中存的是什么东西,把这些内容给导出来.当然本篇博客的重点不是如 ...

  3. iOS逆向工程之Theos

    如果你对iOS逆向工程有所了解,那么你对Tweak并不陌生.那么由Tweak我们又会引出Theos, 那么什么是Theos呢,简单一句话,Theos是一个越狱开发工具包,Theos是越狱开发工具的首先 ...

  4. iOS逆向工程之Hopper+LLDB调试第三方App

    LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具.使用LLDB可以动态的调试你的应用程序,如果你不做其他的额外处理 ...

  5. iOS逆向工程之Hopper中的ARM指令

    虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...

  6. iOS逆向工程之Cycript

    1.连接设备 打开一个终端,输入指令: iproxy 重新打开一个新的终端,输入指令: ssh -p root@127.0.0.1 这时候会提示输入密码:默认密码为“alpine”.这样就可以连接到设 ...

  7. 逆向工程之App脱壳

    http://www.cnblogs.com/ludashi/p/5725743.html iOS逆向工程之App脱壳 本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是 ...

  8. FrameWork逆向工程之MotioPI

    在BI项目建设的过程中我们一般都是有备份的,而且这个是必须有的!特别是例如ETL Model,还有Data Model这一类的元数据,这些东西如果我们没有备份,而恰好的我们的开发模型又在某一天离我们而 ...

  9. 第【一】部分Netzob项目工具的安装配置

    第[一]部分Netzob项目工具的安装配置 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途. 2)若本文档内有侵权文字或图片等内容,请联系作者bitp ...

随机推荐

  1. 聊聊Unity项目管理的那些事:Git-flow和Unity

    0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...

  2. ImageView缩放选项

    ImageView.ScaleType 将图片边界缩放到所在view边界时的缩放选项. Options for scaling the bounds of an image to the bounds ...

  3. ASP.NET Core 中间件之压缩、缓存

    前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...

  4. OpenCASCADE Expression Interpreter by Flex & Bison

    OpenCASCADE Expression Interpreter by Flex & Bison eryar@163.com Abstract. OpenCASCADE provide d ...

  5. EntityFramework Core 1.1是如何创建DbContext实例的呢?

    前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...

  6. C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...

  7. java web学习总结(五) -------------------servlet开发(一)

    一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...

  8. 通过sails和阿里大于实现短信验证

    通过sails与阿里大于来实现注册短信验证码的发送,逻辑图如下 1.用户在客户端发送手机号给服务器,服务器接收到手机号,生成对应时间戳,随机四位数验证码 2.服务器将电话号码和验证码告诉阿里大于服务器 ...

  9. 一切从“简”,解放IT运维人员

    运维人的神技 运维既是个技术活儿也是个苦差事,而运维人员被期望有着无限的技能:主机.存储.网络.操作系统样样精通,而且还要会写SQL.shell.开发语言java..net.python等等,对业务更 ...

  10. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...