【越獄開發】在越獄設備下開啓iOS Webkit的JIT功能

其實很久之前就有越獄工作者研究過iOS的MobileSafari是如何進行 JIT 處理。

原始PDF地址爲:http://reverse.put.as/wp-content/uploads/2011/06/syscan11_breaking_ios_code_signing.pdf


其簡單原理如下:

JIT的本質是在運行時動態生成Native Code並執行。

這個操作恰恰是App Store所禁止的,因爲App Store必須審覈第三方程序上傳的Native Code,所以iOS系統會通過權限管理對應用程序進行限制。

所做的限制可以簡單理解爲 “動態生成的NativeCode只能在 某個內存分頁上執行”。詳情見上面的PDF。


如何在越獄設備上開啓第三方應用程序的JIT:

衆所周知,MobileSafari是開啓了JIT的。我們可以通過 ldid 工具查看其 Code Sign,發現有如下字段:

	<key>dynamic-codesigning</key>
	<true/>
該字段就是爲了告訴系統,該程序有動態代碼的需求。


如果我們想將iOS的Chrome開啓JIT,那麼我們只需參考 http://blog.csdn.net/lucky_06/article/details/8925804 的方法,添加上述entitlement 字段即可。

對於自己build的程序,只要在code sign entitlements 的時候添加上述字段就可以開啓。


效率對比:

通過SunSpider測試, http://www.webkit.org/perf/sunspider/sunspider.html

在iPad2上的結果如下:(代表每項平均完成時間,越小越好)

開啓JIT : 7213ms

開啓JIT    : 1803ms


總體效率差距有3倍之多,Apple真是暴君。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章