Reveal简单使用 | iOS逆向

【Reveal】

  • UI分析工具,很多时候,我们看到一个好看的效果,却不知道其实现的时候,可以使用Reveal一通分析!!

![图片](/assets/blogImg/reveal_fx1.jpeg)

【自己的APP】

首先需要准备的是Reveal软件,这个软件是收费的有30天的免费试用期,不过网上破解版的还是挺多的,就不放链接了

安装完成打开就是上面的图片,其中是没有app的,因为我们还没有打开app,一步步来就好

1.打开自己的Xcode

2.别急着运行,需要先配置,

2.1 在打断点的位置添加Symbolic Breakpoint

2.2 在Symbol里面输入UIApplicationMain

2.3 点击Action按钮 变成Debugger Command 状态

2.4 在Action里面输入   expr (Class)NSClassFromString(@"IBARevealLoader") == nil ? (void *)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/RevealServer.framework/RevealServer", 0x2) : ((void*)0)

2.5 勾选 Automatically continue after evaluating actions.

完成之后效果图如下

图片

3.这个时候运行项目了,注意使用模拟器,且reveal需要打开

4.运行之后会在reveal界面上看到如下图,比原来的多出来图标,点击打开即可

图片

【分析其他AppUI】

分析其它AppStore下载的AppUI需要准备:1.一台越狱的手机,2.安装SSH ,3.安装cycript,4.安装reveal loader

解释一下:1.越狱手机权限巨大,才得以让我们进入其他app,2.ssh 是为了我们在mac端使用命令连接iphone ,3.cycript获取app的bundleId,4.配合reveal

注意:
1.手机和mac需要在同一局域网,即连接同一wifi,
2.文件拷贝时候的ip地址,就是iphone连接wifi的ip,
3.ssh等配置就不在这里叙述,网上太多了,直接搜索就行

废话不多说,直接开始(查看AppStore的UI)

  1. 打开终端使用命令 scp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework root@192.168.0.X:/System/Library/Frameworks (注: /Applications***/Reveal.framework 这个是我们安装的Reveal内的framework文件 可以对程序查看包内容里面看到,后面的IP地址即iphone连接wifi之后的地址)

  2. 第二条 :scp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib root@192.168.0.X:/Library/MobileSubstrate/DynamicLibraries ,使用这条命令的时候会报错,原因是libReveal.dylib这个库没找到,因为在新版本的Reveal里面是没有这个库的,这个时候需要显示包内容,在包里面的RevealServer.framework里面找到RevealServer,copy出来,重命名为libReveal.dylib,然后修改上面地址为刚刚copy出来的地址,再执行,就可以了

  3. 新建一个libReveal.plist文件,输入如下(这里的Bundles是各个APP的 BundleID,com.apple.AppStore是appstore的id)
    {

      Filter = {
      Bundles = ("com.apple.AppStore");
      };
    

    }

4.使用 scp (libReveal.plist位置) root@192.168.0.X:/Library/MobileSubstrate/DynamicLibraries 将libReveal.plist文件丢到手机里面

5.重启手机,打开Reveal,再打开appstore,这样就能看到如下图

图片

这个时候就会有一个问题,既然是根据Bundles里面的ID来的,那我们如何获取其他APP的id呢

【获取其他BundleID】

1.使用ssh进入IPhone :ssh root@192.168.1.X
2.使用cycript的命令 :ps -e |grep /var/mobile* 查看运行的App名字
3.命令: cycript -p Starbucks(注:Starbucks是我找的星巴克的name)
4.命令:[[NSBundle mainBundle] bundleIdentifier] 打印出来的就是对应app的BundleID
5.再进行上述文件操作,就ok了

友情提示 星巴克的id:com.starbuckschina.mystarbucksmoments

最后界面如下

图片

图片

【其他】

都到这一步了,不得不填坑星巴克app分析了,下班再说······