【越狱开发】在越狱设备下开启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真是暴君。




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值