iOS逆向之Reveal(MacOS&iOS)调试工具

2019-12-24  本文已影响0人  听木子说心语

本篇文章开始前,这里会有个小插曲:

事情是这样的,逆向群里有个小伙伴,看了上一篇(iOS逆向之逆向工具)文章后,对Reveal工具的使用不是很了解,感谢小伙伴能够联系我,本篇文章将会对Reveal详细介绍.

如果你看了前几篇文章,感觉有疑问或者哪里需要补充,都可以随时联系我.我在这里也要保证文章的质量,不能写无用的文章.浪费了你浏览的时间,也浪费了我写文章的时间.

这位小伙伴给我提了想法,他也很喜欢我写的iOS逆向系列文章.

就像这个小伙伴一样,我忽略的东西有可能是你感兴趣的,把知识补充完整,分享给大家,挺好的一件事情.

注意 你可以留言,加群,或者其它方式联系我,我看到就会回复大家.

Reveal

1.Reveal介绍

Reveal下载地址:Reveal
Reveal是一个用于查看程序界面结构和调试界面的工具,可以直观的查看应用的UI布局.

Reveal

通过高级可视化、全面的检查器和动态修改应用程序的能力,您可以在几秒钟内调试视图布局和呈现问题。

介绍了这些,基本了解了Reveal的基本功能.

2.RevealServer.framework 如何获取?
Reveal iOS Library RevealServer.framework

可以看到RevealServer.framework文件.到这里,我们已经获取到了RevealServer.framework.

你已经知道了怎么去获取RevealServer.framework了.

3.RevealServer.framework如何在项目中使用?
新建Xcode项目并RevealServer.framework拖进工程 运行后Xcode崩溃了

真机运行后,Xcode崩溃了.

dyld: Library not loaded: @rpath/RevealServer.framework/RevealServer Referenced from: /var/containers/Bundle/Application/B5E77A27-B9C1-488B-9ABD-79F3FED77D1C/TEST.app/TEST Reason: image not found

报错原因是镜像没有发现

解决崩溃的办法

我们只需要在Embedded Binaries中导入RevealServer.framework,运行真机看一下是否还会崩溃.

项目已经正常运行.
到这一步,你已经可以完成了一大半的任务了.

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,strong)UIButton *revealBtn;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    [self.view addSubview:self.revealBtn];
}

-(UIButton*)revealBtn{
    if (!_revealBtn) {
        _revealBtn = [UIButton buttonWithType:UIButtonTypeCustom];
        _revealBtn.frame = CGRectMake(100,100, 100,40);
        _revealBtn.backgroundColor = [UIColor redColor];
        [_revealBtn setTitle:@"测试" forState:UIControlStateNormal];
        [_revealBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    }
    return _revealBtn;
}

@end

运行结果

代码只创建了一个红色背景的按钮.
这样的项目不需要太复杂,我们只是演示一下.

运行项目后的Reveal应用 运行结果

Reveal运行结果和我们真机运行结果是一模一样的,现在是2D的画面

画面层级

左侧是视图层级,通过3D画面可以看出层级的层次.
我们了解了界面的层级以及所使用的类,一目了然.
不管是分析某些应用,还是分析自己开发的项目,对界面的优化及分析帮助性很大.

注意

如果你需要上架AppStore,Reveal不可以和项目一起提交的,在这里要特别注意
4. CoacoaPods集成
pod集成
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'TEST' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
   pod 'Reveal-SDK', :configurations => ['Debug']
  # Pods for TEST

end

configurations 设置表示只有Debug模式下开启,如果release是关闭状态.

pod install

我相信你已经学会了两种方式使用Reveal

5.如何在越狱设备中安装Reveal呢?

考虑
如果我们没有办法注入到想要查看的项目,我们有没有其他的方式呢?
答案是有的

reveal Loader 7A286D79-08DE-446A-8A2F-21DB343E0F42.png 安装后的Reveal 点击进入reveal 找到TEST 开启权限

注意
是不是可以通过Reveal应用查看指定的应用呢?
答案是不可以.
我尝试很久,没有成功,最终找到了原因.

解决Reveal无显示的问题?
RevealServer libReveal.dylib 和 libReveal.plist libReveal.plist
<dict>
    <key>Bundles</key>
    <string>com.apple.AppStore</string>
</dict>
Reveal 1 Reveal 2
6.总结

通过本篇文章的学习,相信你对Reveal有了深刻的了解.
如何使用Reveal,大家应该清楚了.
本篇文章主要讲了三种方式是用Reveal.

上一篇 下一篇

猜你喜欢

热点阅读