目录
前言
reveal loader方式部署
两种部署方式总结
前言
环境:
Mac OS 10.13
Reveal(官方试用版V24,Mac上安装)
iOS 12.4.5
测试iOS app的时候遇到一个问题,明明返回的字段是未做过任何处理的xss语句,但是在界面上完全执行不了,xss很菜,所以想走个捷径,直接看界面的前端代码来进行xss测试(类似chrome的开发者工具)。
然而,但是
app的UI并不是html界面!要测试的app也不是H5!配置好reveal之后发现并没有我想象中的JS代码。
让我们重新温习一遍reveal的作用:
Reveal是一个用于查看程序界面结构和调试界面的工具,可以直观的查看应用的--
--UI布局

没怎么了解过app的开发,暂时不清楚知道布局能用来做什么。
reveal loader方式部署
Reveal越狱注入的工作方式和frida以及debugsever的思路差不多,都是iOS客户端部署+Mac端sever执行的操作模式。
1. 通过Mac端的Reveal制作libReveal.dylib
在Mac端安装并打开reveal,访问选项iOS library,找到RevealServer文件(根据版本不同,旧版可能直接有libReveal.dylib),然后将RevealServer文件名修改为libReveal.dylib(其他名字不行)。


2. 获取libReveal.dylib后,我们先在iOS端的cydia上搜索安装reveal loader。
3. 安装好reveal loader后,在iOS设备中的/Library文件夹下新建RHRevealLoader文件夹,然后将libReveal.dylib放入该文件夹(用scp或者fileZilla都可以)。
4. 打开设置,进入Reveal选项,Reveal->Enabled Applications->Select which application to load Reveal into.

5. 选择好app后,在iOS上重新启动该app(此时,你的iOS设备应该已经usb连接到mac,或者已经和mac处于同一个局域网段了),即可在Mac上的reveal中显示你的app(第一个表示局域网,第二个表示usb):

6. 点击任意一个,等待它加载好了,就可以开始未知的工作了(不知道布局能用来做什么,有大佬给我解答一下吗)。
两种部署方式总结
在查阅和学习中,总结了两种部署的方式,因为网上查到的教程有点乱,因此做个梳理。
配置时两种方法都做了,但是由于冲突,最后只做了第二种(就是reveal loader方式部署)。
第一种方法,是MobileLoader直接加载libReveal.dylib,是参考《iOS应用逆向与安全》(刘培庆)中介绍的方法,这个方法没试验完全,但是多数教程有它的影子(书上介绍的方法可能是有效的,一开始不能理解,后来又同时部署了两套dylib,导致指定的app闪退,最后关头放弃了尝试这种方法)。
第一种方法是直接在/Library/MobileSubstrate/DynamicLibraries/目录下加入libReveal.dylib和libReveal.plist即可,无需在客户端再安装任何东西。其中plist文件只有一个bundles值,指向待测的app。由于MobileLoader的工作原理,这个目录的动态库会按照一定的规则被加载入app中(这个原理在移动App入侵与逆向破解技术-iOS篇有详细介绍),因此我们只需要把这两个文件放进去,然后重新启动App即可。
plist内容:
{Filter = { Bundles = ( "com.XXXX.XXX", ); }; }
第二种方法可能是第一种方法的一个延伸性质的开发,因为安装的reveal loader还是在/Library/MobileSubstrate/DynamicLibraries/目录中添加了动态库文件,实际可能只是代替了libReveal.plist的功能。(当然,好像大部分tweak都是这种思路)
感觉上,第一种方式是通过MobileLoader>A.plist>A.dylib的方式去加载的,而第二种方式是通过MobileLoader>B.plist>B.dylib>A.dylib的方式(A表示libReveal,B表示reveal loader对应的dylib名称)。
还是建议采用第二种方法,因为选择app时比较灵活,虽然加载的步骤多,可能相对慢一点。
参考: