一.简介
restrict [ri'strikt]
- vt. 限制;约束;限定
在dyld源码中,dyld会判断mach-o的segments中判断是否有restrict
这个字段.
如果有的话,那么就不会加载DYLD_INSERT_LIBRARIES
环境变量的动态库.
所以可以在程序中加入restrict
这个字段
二.使用
- 在xcode -> build settings -> Other Link Flags 添加
-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null
标记即可. - 使用machoview即可看到load commands中多了__RESTRICT,__restrict字段.
三.破解
使用machoview或者二进制修改工具,修改__restrict
字段即可.
然后重签名,运行.
四.防破解
在+ (void)load
方法中,调用dyld源码hasRestrictedSegment
函数判断是否修改了__restrict
字段.
五.注意
iOS10以后,苹果在dyld中就不在检测__restrict
字段,所以这样的防护已经失效.