一身转战三千里,一剑曾当百万师。这篇文章主要讲述最新Reveal安装与使用,可以查看任意AppUI布局。相关的知识,希望能为你提供帮助。
最近在看ios逆向的资料,发现了调试UI的工具--Reveal,发现这在实际开发中也是很有用处。当我们需要参照其他App界面布局的时候,使用这个工具可以看他的布局情况。不过这需要手机越狱才行。如果没有越狱的话,只能调试自己的App,有同学会说,如果是自己的App,那我用自带就够了,其实Reveal有个比Xcode自带的更有用的功能。Reveal提供一个可以即时改布局属性的功能,即我不需要修改代码,再重启App来查看。只需要在右边约束直接修改数值,回车一下,就能看到相关的布局了,类似于前端通过浏览器修改界面,个人觉得非常的方便。
安装与使用Reveal的主要步骤:
- 安装Reveal软件。
- 导入RevealServer.framework到项目的根目录。(记得打包前移除,RevealServer.framework在Reveal应用的Help--> Show Reveal Library in Finder--> iOS Library中获取,如果是调试自己的App,到这一步就可以了)。
- 将libReveal.dylib和libReveal.plist移到iOS设备的目录/Library/MobileSubstrate/DynamicLibraries。
2. 导入RevealServer.framework到项目的根目录: 【最新Reveal安装与使用,可以查看任意AppUI布局。】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。
安装好对应的插件后,开始准备工作:
- 将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 [email protected]192.168.2.6:/Library/MobileSubstrate/DynamicLibraries/libReveal.dylib
需要输入的默认密码是:apline
这里我因为试了一下 OpenSSH 能不能成功连上手机。使用了。"ssh [email protected]"。输入密码apline后,成功连接了iPhone的机子,再使用上面命令一直说找不到文件目录,是因为当前设备主体不对。小小注意一下。另外类似的代码将libReveal.plist也移入到设备中:
scp xxx/libReveal.plist[email protected]192.168.2.6:/Library/MobileSubstrate/DynamicLibraries/libReveal.plist
plist的内容是你要调试的App的bundle id。如下图:
文章图片
这里再贴上一份。获取手机所有应用的bundle id的代码。
NSMutableArray *allID = [[NSMutableArray alloc] init]; ClassLSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace"); NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)]; NSArray *appArray = [workspaceperformSelector:@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。即可看到对应界面。
文章图片
文章图片
推荐阅读
- Unity Launcher类,轻松打开网页,照片,app 等
- .NetCore 使用AutoMapper
- Pandas Series.std()用法示例
- Pandas Series.value_counts()实例介绍
- Pandas Series.unique()用法介绍
- Pandas Series.to_frame()用法介绍
- Pandas Series.map()用法详解
- Pandas DataFrame.groupby()示例
- Pandas DataFrame.pivot_table()使用示例