1. 程式人生 > >最新Reveal安裝與使用,可以查看任意AppUI布局。

最新Reveal安裝與使用,可以查看任意AppUI布局。

所有 pac RF def 屬性 desc 手機 selector 最簡

  最近在看iOS逆向的資料,發現了調試UI的工具--Reveal,發現這在實際開發中也是很有用處。當我們需要參照其他App界面布局的時候,使用這個工具可以看他的布局情況。不過這需要手機越獄才行。如果沒有越獄的話,只能調試自己的App,有同學會說,如果是自己的App,那我用自帶就夠了,其實Reveal有個比Xcode自帶的更有用的功能。Reveal提供一個可以即時改布局屬性的功能,即我不需要修改代碼,再重啟App來查看。只需要在右邊約束直接修改數值,回車一下,就能看到相關的布局了,類似於前端通過瀏覽器修改界面,個人覺得非常的方便。

  安裝與使用Reveal的主要步驟:

  1. 安裝Reveal軟件。
  2. 導入RevealServer.framework到項目的根目錄。(記得打包前移除,RevealServer.framework在Reveal應用的Help-->Show Reveal Library in Finder-->iOS Library中獲取,如果是調試自己的App,到這一步就可以了)。
  3. 將libReveal.dylib和libReveal.plist移到iOS設備的目錄/Library/MobileSubstrate/DynamicLibraries。

  1. 安裝Reveal軟件:

    https://blog.csdn.net/Crazy_SunShine/article/details/78843023 這位博主大大提供了破解版。裏邊也有其他幾種方式使用Reveal,這裏就記錄使用過的最簡單的方式。

  2. 導入RevealServer.framework到項目的根目錄: 

    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。

    安裝好對應的插件後,開始準備工作:

    1. 將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 root@192.168.2.6:/Library/MobileSubstrate/DynamicLibraries/libReveal.dylib

需要輸入的默認密碼是:apline

      這裏我因為試了一下 OpenSSH 能不能成功連上手機。使用了。"ssh [email protected]"。輸入密碼apline後,成功連接了iPhone的機子,再使用上面命令一直說找不到文件目錄,是因為當前設備主體不對。小小註意一下。另外類似的代碼將libReveal.plist也移入到設備中:

scp xxx/libReveal.plist  root@192.168.2.6:/Library/MobileSubstrate/DynamicLibraries/libReveal.plist 

    plist的內容是你要調試的App的bundle id。如下圖:

技術分享圖片

    這裏再貼上一份。獲取手機所有應用的bundle id的代碼。

NSMutableArray *allID = [[NSMutableArray alloc] init];
    Class  LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
    NSObject* workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
    NSArray *appArray = [workspace  performSelector:@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。即可看到對應界面。
技術分享圖片

技術分享圖片

最新Reveal安裝與使用,可以查看任意AppUI布局。