日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

Reveal的簡介及基本使用

大?。?/span>0.6 MB 人氣: 2017-10-11 需要積分:1
 Reveal簡介:
  這是個(gè)神奇的工具,它能常透徹地分析個(gè)App的UI結(jié)構(gòu)。
  這個(gè)工具包括兩部分,部分是在PC上運(yùn)行的一個(gè)獨(dú)立應(yīng)用,即Reveal.app,另一部分代碼在你要分析的某個(gè)App中,為此,Reveal提供了一個(gè)Framework和一個(gè)Dylib供使用。這兩部分之間通過Bonjure這種零配置網(wǎng)絡(luò)進(jìn)行通訊。
  基本使用
  Reveal.app的使用沒有什么可說的,就是點(diǎn)擊運(yùn)行。關(guān)鍵是另一部分,怎么嵌入到App中。
  我們自己的App都有源碼,因此最簡單的方式就是靜態(tài)鏈接方式集成到App中。
  關(guān)于基本使用,參考幫助中的“Integration Guide”,或者參考這些鏈接:
  真正的需求
  我弱弱地問一句:我自己的UI還需要用這個(gè)工具分析?有這個(gè)需求嗎?
  實(shí)際上,Reveal是一個(gè)逆向工程工具,主要是用來分析別人的App(的UI),說是學(xué)習(xí)也好、研究也好、剽竊也好,反正這個(gè)工具真正的價(jià)值和意義就是用于分析別人的App。
  libReaveal.dylib的限制
  要分析別人的App,需要用到libReveal.dylib,很可惜,1.5版本提供的dylib不支持ARM架構(gòu),也就是說,只能用于模擬器。搞了半天,還是只分析自己的App,Reveal,你啥意思?
  其實(shí)早期版本的libReveal.dylib是支持ARM架構(gòu)的,那時(shí),只要把這個(gè)libReveal.dylib文件扔到手機(jī)的/Library/MobileSubstrate/DynamicLibraries/目錄下,就OK了。后來為何不支持ARM架構(gòu)了呢?我想這里面肯定發(fā)生了什么事,我想可能被投訴侵權(quán)了……想啥也沒用,這個(gè)libReveal.dylib現(xiàn)在不好使了!
  搜了一下,往前好幾個(gè)版本都不支持ARM了,再早的,官方?jīng)]的下載,據(jù)說也不能與新版的ReavealApp配合使用。
  Reveal,你是不是有點(diǎn)尷尬?
  自己做一個(gè)libReveal.dylib
  別責(zé)怪Reveal了,其實(shí)人家啥都給了,不是有Reveal.framwwork嗎?它可是模擬器和真機(jī)都支持的,如果你用它自己制作一個(gè)libReveal.dylib,支持ARM架構(gòu),用來分析別人的App,那么……“后果自負(fù)”,這絕對是Reveal的意思。
  哈哈?~不就是一個(gè)越獄插件嗎,這個(gè)容易,附件就是我做的。制作過程也有點(diǎn)小坑,所以也貼出來吧。
  這需要the os或者iOSOpenDev,正好我已經(jīng)裝了iOSOpenDev。
  打開xcode,新建一個(gè)工程,如圖:
  Reveal的簡介及基本使用
  我的工程干脆也叫l(wèi)ibReveal。
  工程建立了之后,我把Reveal.framework拖進(jìn)來,再加一行l(wèi)og吧。
  
  編譯,OK,dylib文件生產(chǎn)了。
  拖拽過去,然后隨便打開一個(gè)App試了試,不行,Reveal.App沒有發(fā)現(xiàn)什么。嗯,我預(yù)料到了,不可能這么順!
  我仔細(xì)看了一下編譯生產(chǎn)的這個(gè)libReveal.dylib文件,大小才150K,怎么這么???
  我想起來了,它嵌碼不是“零代碼”嗎?“零代碼”應(yīng)該是利用了類加載機(jī)制,啟動(dòng)代碼應(yīng)該放在load或者initialize里,只要這個(gè)類被加載,就會(huì)執(zhí)行到。
  同時(shí),還要保證這個(gè)類一定會(huì)被用到,這要用到Objective-c的category特性,很可能可能是對UIApplication做了category,這個(gè)我稍后分析一下就知道了。
  如果要在動(dòng)態(tài)庫中使用了OC的category特性,必須在link時(shí)告訴連接器,否則category中的代碼將不會(huì)被編譯到dylib或者framwwork中(除非明確使用到)。添加連接參數(shù):
  
  再編譯,出了六十多個(gè)錯(cuò)誤,都是說xxx符號找不到,根據(jù)提示,把Foundition、UIKit、coreGraphics、QuartzCore、CFNetwork、libz加入進(jìn)來(注意,F(xiàn)oundtion.framework本來就加進(jìn)來了,需要?jiǎng)h掉重新加進(jìn)來,否則在8.0以前的iOS上不能運(yùn)行,報(bào)告找不到NSNetService,這是個(gè)小坑)。
  
  編譯,通過!這回大小1.7M(支持armv7和arm64),在拖過去試了一下,大功告成!
  最后,有兩點(diǎn)必須說明:
  plist文件,也就是libReveal.plist這個(gè)文件,它起過濾作用,或者說它決定你要研究那個(gè)App,你通過指定bundleId來決定哪個(gè)App/進(jìn)程啟動(dòng)時(shí),這個(gè)libReveal.dylib注入進(jìn)去。
  libReveal.dylib的危險(xiǎn)性像springboard等系統(tǒng)進(jìn)程,你不應(yīng)該注入進(jìn)去,否則可能會(huì)有危險(xiǎn)。特別是,當(dāng)libReveal.plist不存在時(shí),相當(dāng)于沒有過濾,沒有限制,所有進(jìn)程都會(huì)被注入。我試過刪除libReveal.dylib,真的不好玩,重啟就完蛋了,最后的代價(jià)是重新刷機(jī)。
?

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

Reveal的簡介及基本使用下載

相關(guān)電子資料下載

      發(fā)表評論

      用戶評論
      評價(jià):好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關(guān)規(guī)定!

      ?
      绥宁县| 璧山县| 周至县| 商水县| 黄浦区| 阜南县| 东源县| 修文县| 仙居县| 邵阳县| 七台河市| 彰化县| 正宁县| 玛曲县| 鄂托克前旗| 天祝| 会宁县| 锦屏县| 安图县| 临朐县| 什邡市| 巴南区| 遵义县| 玉门市| 盐池县| 正蓝旗| 鸡西市| 辽源市| 福贡县| 东海县| 锦屏县| 茌平县| 修文县| 鄱阳县| 荔浦县| 通榆县| 宜宾市| 苏尼特左旗| 浦城县| 自治县| 内乡县|