码迷,mamicode.com
首页 > 移动开发 > 详细

最新Reveal安装与使用,可以查看任意AppUI布局。

时间:2018-07-02 15:32:51      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:cti   col   项目   loader   连接   AC   准备   导入   location   

  最近在看iOS逆向的资料,发现了调试UI的工具--Reveal,发现这在实际开发中也是很有用处。当我们需要参照其他App界面布局的时候,使用这个工具可以看他的布局情况。不过这需要手机越狱才行。如果没有越狱的话,只能调试自己的App,有同学会说,如果是自己的App,那我用自带就够了,其实Reveal有个比Xcode自带的更有用的功能。Reveal提供一个可以即时改布局属性的功能,即我不需要修改代码,再重启App来查看。只需要在右边约束直接修改数值,回车一下,就能看到相关的布局了,类似于前端通过浏览器修改界面,个人觉得非常的方便。

  安装与使用Reveal的主要步骤:

  1. 安装Reveal软件。
  2. 导入RevealServer.framework到项目的根目录。(记得打包前移除,RevealServer.framework在Reveal应用的Help-->Show Reveal Library in Finder-->iOS Library中获取,如果是调试自己的App,到这一步就可以了)。
  3. 将libReveal.dylib和libReveal.plist移到iOS设备的目录/Library/MobileSubstrate/DynamicLibraries。

  1. 安装Reveal软件:

    https://blog.csdn.net/Crazy_SunShine/article/details/78843023 这位博主大大提供了破解版。里边也有其他几种方式使用Reveal,这里就记录使用过的最简单的方式。

  2. 导入RevealServer.framework到项目的根目录: 

    RevealServer.framework在Reveal应用的Help-->Show Reveal Library in Finder-->iOS Library中获取。取到后,拖进项目的根目录。然后在TARGETS中添加RevealServer.framework。

  技术分享图片

    到这一步后,运行项目,打开Reveal,即可看到对应的项目。

技术分享图片

    随便选择一个即可看到对应的层级结构。到这一步就能调试自己的App了。

  3. 查看其它任意App的布局:

    这一步需要越狱的手机,越狱的方法很多,PP助手、爱思助手都可以。越狱后在Cydia中安装三个重要的插件:Cydia Substrate、OpenSSH、Reveal Loader。

    安装好对应的插件后,开始准备工作:

    1. 将libReveal.dylib和libReveal.plist移到iOS设备的目录/Library/MobileSubstrate/DynamicLibraries。新版的Reveal没有libReveal.dylib。需要将RevealServer.framework中的RevealServer文件移入时重命名成libReveal.dylib,使用的命令是(将IP地址换成iOS设备的IP地址,主要要保持在一个局域网内):
scp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework/RevealServer root@192.168.2.6:/Library/MobileSubstrate/DynamicLibraries/libReveal.dylib

需要输入的默认密码是:apline

      这里我因为试了一下 OpenSSH 能不能成功连上手机。使用了。"ssh root@192.168.2.6"。输入密码apline后,成功连接了iPhone的机子,再使用上面命令一直说找不到文件目录,是因为当前设备主体不对。小小注意一下。另外类似的代码将libReveal.plist也移入到设备中:

scp xxx/libReveal.plist  root@192.168.2.6:/Library/MobileSubstrate/DynamicLibraries/libReveal.plist 

    plist的内容是你要调试的App的bundle id。如下图:

技术分享图片

 

    这里再贴上一份。获取手机所有应用的bundle id的代码。

NSMutableArray *allID = [[NSMutableArray alloc] init];
    Class  LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
    NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
    NSArray *appArray = [workspace  performSelector:@selector(allApplications)];
    NSString *model = [UIDevice currentDevice].model;
    for (NSString *str in appArray) {
        //转换成字符串类型
        NSString *string  =  [str description];
        NSRange rg1 = [string rangeOfString:@">"];
        string = [string substringFromIndex:rg1.location + 2];
        if ([model isEqualToString:@"iPad"]) {
            NSRange rg2 = [string rangeOfString:@"<"];
            string = [string substringToIndex:rg2.location - 1];
        }
        NSDictionary *dic = @{@"bundleID":string};
        [allID addObject:dic];
    }
    NSLog(@"allID-----%@",allID);

2. 在iOS设备上设置中 Reveal 的Enabled Applications指定要查看的App。

技术分享图片

技术分享图片

 

 

到这里就完成了。
接下来打开你要查看的App,再打开Reveal。即可看到对应界面。
技术分享图片

技术分享图片

 

最新Reveal安装与使用,可以查看任意AppUI布局。

标签:cti   col   项目   loader   连接   AC   准备   导入   location   

原文地址:https://www.cnblogs.com/guanshenbao/p/9253870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!