在iOS逆向工程中,Reveal扮演着重要角色,一般情况下,Reveal在iOS开发过程中可以分析UI界面的状态,同样也可以应用于分析其他任意的App。特别是对于初学者来说,去了解其他优秀App的界面搭建,对于提升开发能力也有极大帮助。

1、准备工作

在使用Reveal分析他人的app之前,请确保如下条件具备:

  • 一台能够越狱的iPhone,最好是iOS7或者iOS8版本;
  • Reveal1.6.2最新版本
  • PP助手:电脑上安装最新的PP助手
  • 文本编辑器:如UltraEdit等
  • 一台无线路由器,需要保证MAC与手机都连接到同一台无线路由器上

2、手机越狱

根据iPhone系统版本的情况,选择对应的越狱方法,对iPhone进行越狱操作。

3、cydia中安装软件

手机越狱完成后,在cydia中安装如下软件:

  • AFC补丁:Apple File Conduit(有些时候会自动装上,如果没有安装的话,手动安装)
  • Reveal Loader 1.0.0
  • 安装后,请重启手机

4、文件上传

  • 使用文档编辑工具(如:UE)创建一个名称为:libReveal.plist的文件,格式如下:
  1. {
  2. Filter = {
  3. Bundles = (
  4. "com.apple.AppStore",
  5. );
  6. };
  7. }
  • 使用PP助手,上传libReveal.plist文件到iPhone的如下目录:/Library/MobileSubstrate/DynamicLibraries

  • 打开Reveal,点击菜单栏上的HELP,选择Show Reveal Library in Finder,然后把libReveal.dylib文件也上传到手机的/Library/MobileSubstrate/DynamicLibraries目录中

5、开始分析

  • 保证iPhone和Mac连接在同一台无线路由器下;
  • 打开iPhone的设置–>Reveal,选择需要分析的App;

  • 在iPhone上,打开需要分析的App,然后返回Reveal,在左上角选中手机,即可分析界面构成。

6、注意点

  1. 必须保证手机和Mac在同一个Wifi环境下,分析时,手机无需用USB线连接到电脑;
  2. 必须上传libReveal.plist文件到手机中,否则会白苹果;如果白苹果了,请参考下一节,如何解除;
  3. libReveal.plist文件,请用文本编辑器创建,不要使用xcode之类的创建,推荐用UE。

7、白苹果解决方法

如果忘记上传LibReveal.plist,会造成手机白苹果,这个时候需要3步操作恢复:

  1. 强制重启:电源键+HOME键长按;
  2. 进入安全模式:开机后,苹果图标一出现,马上按住音量+,即可开机;
  3. 开机后,使用PP助手,删除libReveal.dylib文件(注意是:dylib文件),然后重启,手机恢复正常。

Reveal逆向工程:分析任意iOS应用的UI界面的更多相关文章

  1. iOS - Reveal逆向分析任意iOS应用的UI界面

    在iOS逆向工程中,Reveal扮演着重要角色,一般情况下,Reveal在iOS开发过程中可以分析UI界面的状态,同样也可以应用于分析其他任意的App.Reveal是一个很强大的UI分析工具,可非常直 ...

  2. UI 界面:技术决定一切

    转自:http://www.cnblogs.com/NEOCSL/archive/2012/12/10/2811153.html 在我看来,肖恩帕克不仅仅是一位技术天才和远见卓识的移动互联网领域先锋. ...

  3. Reveal:分析iOS UI的利器

    转:http://security.ios-wiki.com/issue-3-4/ Reveal简介 Reveal是分析iOS应用UI的利器: Reveal能够在运行时调试和修改iOS应用程序.它能连 ...

  4. Reveal:分析iOS UI该武器

    Reveal是分析iOS应用UI的利器: Reveal可以在执行时调试和改动iOS应用程序.它能连接到应用程序,并同意开发人员编辑各种用户界面參数.这反过来会马上反应在程序的UI上.就像用FireBu ...

  5. iOS真机UI调试利器——Reveal

    做iOS的开发,UI是非常非常重要的一环.调试时我们一般用模拟器,提交前用真机做测试.用模拟器来调试UI效果虽然快捷方便,但有时仍然希望有更强大 的工具来帮助分析UI,尤其是专注在UI的效果调试时.最 ...

  6. IOS开发中UI编写方式——code vs. xib vs.StoryBoard

    最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关 ...

  7. 美团开源Graver框架:用“雕刻”诠释iOS端UI界面的高效渲染

    Graver 是一款高效的 UI 渲染框架,它以更低的资源消耗来构建十分流畅的 UI 界面.Graver 独创性的采用了基于绘制的视觉元素分解方式来构建界面,得益于此,该框架能让 UI 渲染过程变得更 ...

  8. Sprint 5 summary: UI 界面更新,Azure端部署和用户反馈分析 12/28/2015

    本次sprint主要完成的任务有对手机APP的UI界面的更新,同时对Azure客户端的部署进行了相应的学习和有关的程序设计.同时对于ALPHA release的用户反馈做出相应的分析以确定接下来工作的 ...

  9. iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸

    iPhone/iPad/Android UI尺寸规范 UI尺寸规范,UI图标尺寸,UI界面尺寸,iPhone6尺寸,iPhone6 Plus尺寸,安卓尺寸,iOS尺寸 iPhone界面尺寸 设备 分辨 ...

随机推荐

  1. Does Deep Learning Come from the Devil?

    Does Deep Learning Come from the Devil? Deep learning has revolutionized computer vision and natural ...

  2. Oozie 生成JMS消息并向 JMS Provider发送消息过程分析

    一,涉及到的工程 从官网下载源码,mvn 编译成 Eclipse工程文件:

  3. [转载]JavaScript异步编程助手:Promise模式

    http://www.csdn.net/article/2013-08-12/2816527-JavaScript-Promise http://www.cnblogs.com/hustskyking ...

  4. 使用sso(cas)的时候报单点登录service不匹配问题分析及解决

    最近在使用portal做企业门户网站,其中使用了sso.在集成了多个应用之后在portal中点击集成的应用报错 2017-05-31 08:37:16,950 ERROR [org.jasig.cas ...

  5. Android的layout_weight和weightSum

    先看一下weightSum属性的功能描述:定义weight总和的最大值.如果未指定该值,以所有子视图的layout_weight属性的累加值作为总和的最大值.把weightSum的定义搁在这里,先去看 ...

  6. 关于USBHID协议以及鼠标键盘描述符的解释【转】

    转自:https://blog.csdn.net/jiujiujiuqiuqiuqiu/article/details/47277685 一.HID设备识别 前面有提到关于SCSI协议的USB设备实现 ...

  7. Linux获取/dev/input目录下的event对应的设备【转】

    转自:https://blog.csdn.net/qq_21792169/article/details/51458855 当我们在Linux操作系统下使用input子系统时,当我们先插鼠标,在插上摄 ...

  8. Google Protocol Buffer的安装与.proto文件的定义(转)

    转自(https://www.cnblogs.com/yinheyi/p/6080244.html) 什么是protocol Buffer呢? Google Protocol Buffer( 简称 P ...

  9. eclipse:无法删除不存在的工程

    把工程改名后,结果在eclipse里面产生了两个工程,一个原工程,一个是新工程,删除原工程报错, 说工程不存在.这个时候拖动原工程到别的workset中,发现原工程消失了,并找到workspace目录 ...

  10. 使用node创建一个服务器,运行vue打包以后的文件

    原理就是使用node里的express框架,搭建一个服务器,然后访问dist文件夹里的文件 prod.server.js var express = require('express') var co ...