用Reveal分析第三方App的UI

2024-03-14 17:32
文章标签 分析 app ui 第三方 reveal

本文主要是介绍用Reveal分析第三方App的UI,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Reveal简介:

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

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

基本使用

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,新建一个工程,如图:

图片描述

我的工程干脆也叫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,真的不好玩,重启就完蛋了,最后的代价是重新刷机。

本文为听云(http://www.tingyun.com/)投稿,作者杨凯。

第一时间掌握最新移动开发相关信息和技术,请关注mobilehub公众微信号(ID: mobilehub)。

mobilehub

这篇关于用Reveal分析第三方App的UI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/809159

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

线性因子模型 - 独立分量分析(ICA)篇

序言 线性因子模型是数据分析与机器学习中的一类重要模型,它们通过引入潜变量( latent variables \text{latent variables} latent variables)来更好地表征数据。其中,独立分量分析( ICA \text{ICA} ICA)作为线性因子模型的一种,以其独特的视角和广泛的应用领域而备受关注。 ICA \text{ICA} ICA旨在将观察到的复杂信号

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h>#include <stdlib.h> void shellSort(int data[], int n){// 划分的数组,例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量,换值int temp;in

三相直流无刷电机(BLDC)控制算法实现:BLDC有感启动算法思路分析

一枚从事路径规划算法、运动控制算法、BLDC/FOC电机控制算法、工控、物联网工程师,爱吃土豆。如有需要技术交流或者需要方案帮助、需求:以下为联系方式—V 方案1:通过霍尔传感器IO中断触发换相 1.1 整体执行思路 霍尔传感器U、V、W三相通过IO+EXIT中断的方式进行霍尔传感器数据的读取。将IO口配置为上升沿+下降沿中断触发的方式。当霍尔传感器信号发生发生信号的变化就会触发中断在中断

kubelet组件的启动流程源码分析

概述 摘要: 本文将总结kubelet的作用以及原理,在有一定基础认识的前提下,通过阅读kubelet源码,对kubelet组件的启动流程进行分析。 正文 kubelet的作用 这里对kubelet的作用做一个简单总结。 节点管理 节点的注册 节点状态更新 容器管理(pod生命周期管理) 监听apiserver的容器事件 容器的创建、删除(CRI) 容器的网络的创建与删除

PostgreSQL核心功能特性与使用领域及场景分析

PostgreSQL有什么优点? 开源和免费 PostgreSQL是一个开源的数据库管理系统,可以免费使用和修改。这降低了企业的成本,并为开发者提供了一个活跃的社区和丰富的资源。 高度兼容 PostgreSQL支持多种操作系统(如Linux、Windows、macOS等)和编程语言(如C、C++、Java、Python、Ruby等),并提供了多种接口(如JDBC、ODBC、ADO.NET等