p*******e 发帖数: 201 | 1 我看了邮件原文,苹果这次的警告是针对使用了
dlopen(), dlsym(), respondsToSelector:, performSelector:,
method_exchangeImplementations() 等反射函数用于动态调用oc API
通过远程下载的脚本使用这些函数达成改变app行为才会被当做违规行为,
换句话说,就是
如果本地使用(非远程下载)这些函数是允许的,要不oc也没必要提供这些函数,但在
技术上我认为apple很难判别是本地使用,还是被远程更新的脚本调用;
脚本更新是允许的,即lua并不使用上述反射函数,而使用确定的导出函数也是允许的;
为什么呢?苹果给出的解释是担心中间人攻击,就是说,如果使用jspatch可以做到被
中间人利用调用任意系统API,而造成风险,而这些滥用很可能不是app开发者本身的意
图;而一般游戏使用的lua更新方案是在确定的导出API里使用lua作为开发脚本,本身
能够调用的功能是确定、有限的,而不是不确定、任意的系统API,我认为这样做苹果
是默认的;当然使用lua作为脚本,调用了上述oc反射方法的framework、sdk估计也会
被警告,所以结论是不要调用上述反射API。
以上纯属对邮件的单方面无责任解读。 |
|