"深入解讀:探索Reveal調(diào)試工具的奧秘"

在文章開始前,我想分享一個小插曲:

事情是這樣的,逆向群里有個小伙伴,看了上一篇("探秘工具:MacOS工具探索")文章后,對Reveal工具的使用不是很了解,感謝小伙伴能夠聯(lián)系我,本篇文章將會對Reveal詳細介紹.

如果你閱讀了前幾篇文章后腻贰,有任何疑問或者覺得有哪些地方需要補充绑榴,都可以隨時聯(lián)系我笼痛,我會盡力保證文章質(zhì)量碰逸。

正如這位小伙伴一樣鸟废,我可能會忽略一些東西拾碌,但這些東西可能正是你感興趣的雁乡。我會努力完善知識第喳,分享給大家,這是一件挺好的事情踱稍。

Reveal

1.Reveal介紹

Reveal下載地址:Reveal
Reveal是一個用于查看程序界面結(jié)構(gòu)和調(diào)試界面的工具,可以直觀的查看應用的UI布局.

Reveal

通過高級可視化曲饱、全面的檢查器和動態(tài)修改應用程序的能力,您可以在幾秒鐘內(nèi)調(diào)試視圖布局和呈現(xiàn)問題珠月。

  • Reveal是一款運行在Mac OS上的應用扩淀,現(xiàn)在有免費的Beta版本可供下載。要調(diào)試iOS應用啤挎,開發(fā)者要將應用程序與Reveal安裝的框架層關(guān)聯(lián)驻谆。

  • Reveal會掃描其網(wǎng)絡中關(guān)聯(lián)的應用程序,并讓開發(fā)者選擇連接其中之一庆聘,當連接到一個應用程序后胜臊,Reveal將顯示其UI,其中包括大量的參數(shù)和設(shè)置伙判。

  • 開發(fā)人員現(xiàn)在可以檢查UI或者更改設(shè)置象对,直到用戶界面的外觀和行為達到預期目標。目前它尚不支持布局約束宴抚,但根據(jù)Reveal的支持文檔來看勒魔,這一功能將在未來的版本中發(fā)布。

  • Reveal可以和iOS模擬器一起使用菇曲,也可以用在運行在真機上的應用程序上冠绢。另外,Reveal的安裝只需幾分鐘常潮。

  • 除了解析出UI參數(shù)外唐全,Reveal也會通過一個分解的3D視圖顯示復雜的UI層次結(jié)構(gòu)。開發(fā)者可以輕松的檢查UI組件的分層蕊玷,并在其層次結(jié)構(gòu)中選擇特定元素邮利。為了進一步簡化調(diào)試,也可以僅關(guān)注部分UI垃帅,而把其余部分屏蔽起來延届。

介紹了這些,基本了解了Reveal的基本功能.

2.RevealServer.framework 如何獲取?
  • Reveal下載好后,我們打開看看
Reveal
  • 這就是下載的Reveal應用,看上去就很酷.
    這里不是重點,我們首先獲取RevealServer.framework,怎么獲取呢?
iOS Library
  • 選中 Reveal -> 導航欄 Help -> Show Reveal Library in Finder -> 有兩個Library (iOS Library ; tvOS LIBrary),我們這里只關(guān)注iOS Library.

  • 我們點擊進入iOS Library文件夾

RevealServer.framework

可以看到RevealServer.framework文件.到這里,我們已經(jīng)獲取到了RevealServer.framework.

你已經(jīng)知道了怎么去獲取RevealServer.framework了.

3.RevealServer.framework如何在項目中使用?
  • 我們新建Xcode項目工程,命名為TEST
  • 我們把剛才的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

報錯原因是鏡像沒有發(fā)現(xiàn)

  • 如何解決這個問題呢?
解決崩潰的辦法

我們只需要在Embedded Binaries中導入RevealServer.framework,運行真機看一下是否還會崩潰.

項目已經(jīng)正常運行.
到這一步,你已經(jīng)可以完成了一大半的任務了.

  • 我們在ViewController中創(chuàng)建一個Button,下面是代碼
#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

  • 運行之后是這樣的頁面
運行結(jié)果

代碼只是簡單地創(chuàng)建了一個具有紅色背景的按鈕。
對于這樣的項目贸诚,我們并不需要過于復雜的設(shè)計方庭,只是簡單地演示一下即可厕吉。

  • 接著,我們看看Reveal應用發(fā)生了什么變化?
    我們打開Reveal應用
運行項目后的Reveal應用
  • 我們點進去看一下
運行結(jié)果

Reveal運行結(jié)果和我們真機運行結(jié)果是一模一樣的,現(xiàn)在是2D的畫面

  • 我們看一下3D的畫面
畫面層級

左側(cè)是視圖層級,通過3D畫面可以清晰地看出層級的層次械念。

通過這種方式头朱,我們可以輕松地了解界面的層級以及所使用的類,一目了然龄减。

不論是分析某些應用项钮,還是分析自己開發(fā)的項目,對界面的優(yōu)化和分析都有很大的幫助希停。

  • 到這里烁巫,你已經(jīng)知道了如何在自己的項目中使用Reveal。

注意

如果你需要上架AppStore,Reveal不可以和項目一起提交的,在這里要特別注意
4. CoacoaPods集成
  • 開發(fā)最簡單的方式就是通過pod集成
  • 我們在Podfile中配置后,進行配置安裝
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 設(shè)置表示只有Debug模式下開啟,如果release是關(guān)閉狀態(tài).

  • pod install進行集成
pod install
  • 集成之后,我們直接運行項目,同上面的結(jié)果
  • 打開reveal,也是同樣的界面

我相信你已經(jīng)學會了兩種方式使用Reveal

5.如何在越獄設(shè)備中安裝Reveal呢?
  • 在平常開發(fā)中,如果你有越獄設(shè)備,那就非常好了.
  • 如果我們有個功能或者界面布局,你想?yún)⒖计渌鸄PP的功能,你就可以通過越獄設(shè)備,在Cydia中安裝Reveal.
  • 一般我們不借助類似Reveal的軟件,我們是不能查看從AppStore下載的應用,為什么這么說?
    我們沒有辦法把reveal注入到程序內(nèi)部,所以你查看不到.
    上面的兩種方式,我們是主動注入到項目里的,這樣我們可以查看到項目的界面結(jié)構(gòu)

考慮
如果我們沒有辦法注入到想要查看的項目,我們有沒有其他的方式呢?
答案是有的

  • 我們可以通過越獄設(shè)備中安裝Reveal,來達到瀏覽項目結(jié)構(gòu)的目的
  • 我們找到Cydia,并打開,搜索reveal Loader
reveal Loader
  • 我們點擊reveal Loader,并安裝
7A286D79-08DE-446A-8A2F-21DB343E0F42.png
  • 安裝1


    安裝中1
  • 安裝2


    安裝中2
  • 當我們安裝完后,會提示你重啟SpringBoard,我們進行重啟就可以了.

  • 重啟完成后,我們可以在手機 設(shè)置 -> Reveal

安裝后的Reveal
  • 點擊reveal
點擊進入reveal
  • 找到TEST 開啟權(quán)限
找到TEST 開啟權(quán)限

注意
是不是可以通過Reveal應用查看指定的應用呢?
答案是不可以.
我嘗試很久,沒有成功,最終找到了原因.

解決Reveal無顯示的問題?
  • 1.我們需要從RevealServer.framework找到RevealServer
RevealServer
  • 2.把RevealServer重命名為libReveal.dylib
libReveal.dylib 和 libReveal.plist
  • 3.并制作libReveal.plist文件,libReveal.plist內(nèi)需要寫入的內(nèi)容
libReveal.plist
<dict>
    <key>Bundles</key>
    <string>com.apple.AppStore</string>
</dict>
  • 4.把它們拷貝到手機的/Library/MobileSubstrate/DynamicLibraries/ 的目錄下.


    /Library/MobileSubstrate/DynamicLibraries/
  • 5.重啟啟動手機后,可以查看需要瀏覽的應用.
    完美越獄手機重啟后不受影響
    非完美越獄手機需要重新越獄

  • 6.打開Reveal 查看下應用

Reveal 1
Reveal 2
6.總結(jié)

通過本篇文章的學習宠能,相信你對Reveal有了深刻的了解亚隙,知道如何使用它了。
主要講了三種方式使用Reveal:

  • 通過使用Reveal自帶的Framework
  • 通過使用pod集成
  • 通過越獄設(shè)備安裝Reveal违崇,并對其他應用進行界面結(jié)構(gòu)查看阿弃。
  • 另外,除了使用iFunBox拷貝文件羞延,還可以使用終端命令scp恤浪。

希望持續(xù)關(guān)注,下篇文章會有更多精彩內(nèi)容肴楷。歡迎大家留言,及時交流荠呐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末赛蔫,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子泥张,更是在濱河造成了極大的恐慌呵恢,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件媚创,死亡現(xiàn)場離奇詭異渗钉,居然都是意外死亡,警方通過查閱死者的電腦和手機钞钙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門鳄橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人芒炼,你說我怎么就攤上這事瘫怜。” “怎么了本刽?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵鲸湃,是天一觀的道長赠涮。 經(jīng)常有香客問我,道長暗挑,這世上最難降的妖魔是什么笋除? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮炸裆,結(jié)果婚禮上垃它,老公的妹妹穿的比我還像新娘。我一直安慰自己晒衩,他們只是感情好嗤瞎,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著听系,像睡著了一般贝奇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上靠胜,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天掉瞳,我揣著相機與錄音,去河邊找鬼浪漠。 笑死陕习,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的址愿。 我是一名探鬼主播该镣,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼响谓!你這毒婦竟也來了损合?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤娘纷,失蹤者是張志新(化名)和其女友劉穎嫁审,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赖晶,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡律适,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遏插。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捂贿。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖胳嘲,靈堂內(nèi)的尸體忽然破棺而出眷蜓,到底是詐尸還是另有隱情,我是刑警寧澤胎围,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布吁系,位于F島的核電站德召,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏汽纤。R本人自食惡果不足惜上岗,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蕴坪。 院中可真熱鬧肴掷,春花似錦、人聲如沸背传。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽径玖。三九已至痴脾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間梳星,已是汗流浹背赞赖。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留冤灾,地道東北人前域。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像韵吨,于是被迫代替她去往敵國和親匿垄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345