iOS防护01-restrict禁止加载动态库_已失效

一.简介

restrict [ri'strikt]

  • vt. 限制;约束;限定

在dyld源码中,dyld会判断mach-o的segments中判断是否有restrict这个字段.
如果有的话,那么就不会加载DYLD_INSERT_LIBRARIES环境变量的动态库.
所以可以在程序中加入restrict这个字段

二.使用

  1. 在xcode -> build settings -> Other Link Flags 添加-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null标记即可.
  2. 使用machoview即可看到load commands中多了__RESTRICT,__restrict字段.

三.破解

使用machoview或者二进制修改工具,修改__restrict字段即可.
然后重签名,运行.

四.防破解

+ (void)load方法中,调用dyld源码hasRestrictedSegment函数判断是否修改了__restrict字段.

五.注意

iOS10以后,苹果在dyld中就不在检测__restrict字段,所以这样的防护已经失效.

你可能感兴趣的:(iOS防护01-restrict禁止加载动态库_已失效)