一、反注入
有一天,你会发现 cycript 不好使,提示这个
iPhone:~ root# cycript -p app
dlopen(/usr/bin/Cycript.lib/libcycript.dylib, 5): Library not loaded: /System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore
Referenced from: /usr/bin/Cycript.lib/libcycript.dylib
Reason: image not found
* _assert(status == 0):../Inject.cpp(143):InjectLibrary
然后你还发现 Tweak 生成的 dylib 注入不了目标进程。这时可以判断,这个应用是做了反注入的保护了。通过搜索到国外的一篇文章
https://pewpewthespells.com/blog/blocking_code_injection_on_ios_and_os_x.html
了解到在可执行文件添加一个名为 __RESTRICT,__restrict 的节,可以反注入,实际的原理是在 dyld 源码里 pruneEnvironmentVariables 函数里有判断如果有这个节就会无视 DYLD_INSERT_LIBRARIES
switc