在越獄裝置下開啟iOS Webkit的JIT功能

來源:互聯網
上載者:User

其實很久之前就有越獄工作者研究過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真是暴君。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.