在iOS逆向工程中,Reveal扮演着重要角色,一般情况下,Reveal在iOS开发过程中可以分析UI界面的状态,同样也可以应用于分析其他任意的App。Reveal是一个很强大的UI分析工具,可非常直观地查看app的UI布局,不仅限于自己的app,其他app的UI布局也一览无余。

必须要一台越狱手机

越狱教程:http://www.taig.com

安装openSSH(Cydia源里安装)

在mac终端通过openSSH命令连接越狱机

1.越狱机与mac必须连接同一网络
2.在终端命令中输入ssh root@越狱机网络IP,如:ssh root@192.168.2.2
3.输入您修改过的Root密码,默认:alpine

 
 

注意:连接越狱机时,可能出现下面错误(未出错请忽略这块)

RSA host key for 192.168.2.2 has changed and you have requested strict checking.
Host key verification failed.

这是openssh-server重装引起的,执行以下命令即可解决

ssh-keygen -R 192.168.2.2(192.168.2.2换成你要连的手机网络IP)

安装MobileSubstrate(Cydia源里安装)

...

安装Reveal(Mac上)

1.官网:http://revealapp.com
2.可下载试用版:download a trial (当然你也可以买滴~~)
3.如果之前下载过又过期了,可以调整系统时间(调前一两年)

1.打开Revela,找到libReveal.dylibReveal.framework

 
 

2.拷贝Reveal.framework到越狱机 (注意:重新开个终端,无需连接越狱机)

scp -r /Users/apple/Desktop/Reveal.framework  root@192.168.2.2:/System/Library/Frameworks
 
 

可到越狱机查看注入的文件:

 
 

3.拷贝libReveal.dylib到越狱机

scp -r /Users/apple/Desktop/libReveal.plist root@192.168.2.2:/Library/MobileSubstrate/DynamicLibraries/
 
 

4.在本地创建libReveal.plist,编辑libReveal.plist,指定app的Bundle identifier(可以指定多个Bundle identifier),下面添加App Store简书Bundle identifier
(注意:如何找app对应的Bundle identifier请看后面)

 
 

拷贝libReveal.plist到越狱机

scp -r /Users/apple/Desktop/libReveal.plist root@192.168.2.2:/Library/MobileSubstrate/DynamicLibraries/
 
 

可越狱机查看注入的文件:

# cd /Library/MobileSubstrate/DynamicLibraries/
# ls
 
 

重启手机(或执行命令killall SpringBoard),打开App Store简书app,随后在Reveal右上角选择

(注意:有可能白苹果,解决方案请看后面)

 
App Store
 
简书app

如何找到app的Bundle identifier?

1.终端连接越狱机后,输入:cd /private/var/mobile/Containers/Bundle/Application

2.查看手机所有app资源文件输入:ls(列出手机上所有app的资源文件,怎么找?)

 
 

3.打开iTunes->我的应用程序->右键简书app->在Finder中显示->解压ipa->进入解压文件->Payload->右键应用程序->显示包内容->找到可执行文件(黑色)->复制文件名

可执行文件

 
 

查找简书app资源文件路径:find . -name 'Hugo*'

 
 

简书app资源文件名:BE1895C3-5CB0-4894-8A9E-FE4EEF4C7989

4.安装iFile(Cydia源里安装)
进入iFile打开iTunesMetadata.plist:/private/var/mobile/Containers/Bundle/Application/BE1895C3-5CB0-4894-8A9E-FE4EEF4C7989/iTunesMetadata.plist

下图红框里的comjianshu.Hugo即为简书的Bundle identifier

 
 

重启手机后白苹果,无法进入界面

预估原因:libReveal.plist文件格式错误导致

第一种方法:

长按【home键】+【电源键】->在白苹果刚刚出现的时候->按住iPhone的音量增加键->iPhone进入Safe Mode->正常重启->将libReveal.plist文件删掉


第二种方法:

第一步:重新恢复系统
1.打开iTunes,越狱机与电脑连接 -> 长按【home键】+【电源键】6秒强制关机 -> 随后长按【home】键6秒,直到在电脑上看到识别到DFU状态下的USB设备时就进入到DFU模式
2.随后你有两个选择,升级更高系统或恢复出厂状态。(系统都会自动会升级到最高版本8.4.1)
第二步:降低系统,目前越狱只支持8.4以下(8.4.1只能降到8.4)
1.找到8.4的固件(下载地址: http://jailbreak.25pp.com/gujian/固件区分: http://bbs.25pp.com/thread-108715-1-1.html)
2.手机连接mac->打开iTunes->选择设备->摘要->option + 点击更新/恢复iPhone)->选择下载的固件 -> 自动安装直到成功
第三步:越狱
1.用太极软件越狱 (下载地址:http://www.taig.com) (ps:pp助手,8.4越狱失败)

======================================================================================================================
 
下面记录下分析的两款新闻类app:
 
:网易新闻
a.首页(NTESNBNewsListPageController) 顶部:NTESNBNewsNaviBarlnnerView
头部:NTESNBChannelSlideView
-UICollectionView
-NTESNBChannelSlideViewCell
主页:NTESNBPreventScrollingScrollView
tabbar:NTESNBTabBar
:今日头条
a.首页(ArticleTabBarStyleNewsListViewController)
UITransitionView
-TTFeedCollectionViewController
主页:-UIcollectionView
-TTFeedCollectionNewsListCell
-UITableView
顶部:-TTTopBar
-TTCategorySelectorView
头部:-UIScrollView
TTTabbar
-TTArticleTabBarController

iOS - Reveal逆向分析任意iOS应用的UI界面的更多相关文章

  1. Reveal逆向工程:分析任意iOS应用的UI界面

    在iOS逆向工程中,Reveal扮演着重要角色,一般情况下,Reveal在iOS开发过程中可以分析UI界面的状态,同样也可以应用于分析其他任意的App.特别是对于初学者来说,去了解其他优秀App的界面 ...

  2. Reveal:分析iOS UI的利器

    转:http://security.ios-wiki.com/issue-3-4/ Reveal简介 Reveal是分析iOS应用UI的利器: Reveal能够在运行时调试和修改iOS应用程序.它能连 ...

  3. Reveal:分析iOS UI该武器

    Reveal是分析iOS应用UI的利器: Reveal可以在执行时调试和改动iOS应用程序.它能连接到应用程序,并同意开发人员编辑各种用户界面參数.这反过来会马上反应在程序的UI上.就像用FireBu ...

  4. iOS app 逆向过程(持续更新完善)

    一.获取待逆向的app 1.用cyder2直接从源里下载,适合逆向越狱开发的软件. 2.从pp助手中下载,pp助手中有越狱应用和正版应用.越狱应用直接是已经脱壳的,未越狱应用还需要执行砸壳 二.获取待 ...

  5. iOS app内存分析套路

    iOS app内存分析套路 Xcode下查看app内存使用情况有2中方法: Navigator导航栏中的Debug navigator中的Memory Instruments 一.Debug navi ...

  6. IOS照片颠倒分析及移动/页面端的处理策略和思路

    前言: 前几天, 写了一篇关于IOS手机上传照片颠倒的技术分析文章: IOS照片颠倒分析及PHP服务端的处理. 不过其思路是从服务器来进行处理的, 这种做法相当普遍. 今天来讲述下, 如何从移动端/页 ...

  7. (IOS)BaiduFM 程序分析

    本文主要分享下楼主在学习Swift编程过程中,对GitHub上的一个开源app BaiduFM的研究心得. 项目地址:https://github.com/belm/BaiduFM-Swift 一.项 ...

  8. iOS基础 - 内存分析

    一.内存的重要性 程序是否可用的最根本的制约因素. 十分影响用户体验. 程序的crash有很多情况都是内存的原因. 二.iOS平台内存警告机制 iOS系统不支持虚拟内存,一旦出现内存不足的情况,iOS ...

  9. iOS crash日志分析

    iOS crash日志分析 一. 寻找crash文件:手机崩溃后的ips或者crash文件(ips文件可以直接修改成crash文件,直接改后缀名就可以了),这里说下如何拿到crash文件 1. 把运行 ...

随机推荐

  1. winform下通过webclient使用非流方式上传(post)数据和文件

    这两天因为工作的需要,需要做一个winform上传数据到服务器端的程序.当时第一个想法是通过webservice的方式来实现,后来觉得麻 烦,想偷懒就没有用这样的方式,http的post方式变成了第一 ...

  2. 【转】Java中的多线程学习大总结

    多线程作为Java中很重要的一个知识点,在此还是有必要总结一下的. 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程 ...

  3. 织梦Dedecms系统可疑文件include/filter.inc.php扫描出漏洞,该如何解决?

    今天在做网站监察的时候,发现网站出了一个问题,在对网站做木马监测的时候,扫描出一个可疑文件:/include/filter.inc.php,建议删除,但仔细检查后,发现此文件是织梦(Dedecms)系 ...

  4. Linux中实现多网卡绑定总结

    在Linux中实现多网卡绑定 一.原理介绍: 1.什么是bonding? Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用.用于网络负载均衡及网络冗余: Li ...

  5. IIS------如何占用80端口

    如何占用80端口 请看我的一篇随笔: https://www.cnblogs.com/tianhengblogs/p/9292347.html

  6. InsertSql

    declare @hobby table(hobbyID int,hName nvarchar(100));insert into @hobby(hobbyID,hName)Select 1,'爬山' ...

  7. WPF送走控件的focus方法

    我们可以调用Focus()方法,让WPF控件获得焦点, 那我现在不想要焦点了, 如何把这个包袱抛出去? 可以,  恩, 没有Unfocus(), 但下面的方法也许可行(把焦点抛给另一个不知道的控件): ...

  8. cocos2d-x 3.0 在C++中调用lua函数

    代码用的是<cocos2d-x 3.0 在lua中调用自定义类>中的代码. 在上篇的基础上进行扩充. 写lua函数 local function process_packet(user_d ...

  9. linux 端口占用情况

    1,查看8010端口是否被占用 [root@cloud ~]# netstat -an|grep 8010 tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 2,查看8010 ...

  10. Apache 配置文件详解

    0x01 禁止目录列表访问 () 备份httpd.conf配置文件,修改内容: <Directory "/web"> Options FollowSymLinks Al ...