安全

iOS 反调试处理 动态注入 相关

2019-03-16  本文已影响0人  介和

1       开发者要达到反调试的目的,必然是在某个地方(大多数还是在main函数)执行了ptrace(PT_DENY_ATTACH, 0, 0, 0)。所以反反调试的思路非常简单,就是阻止这个执行的发生。  

2   dlopen以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程,dlerror返回出现的错误,

dlsym通过句柄和连接符名称获取函数名或者变量名,

dlclose来卸载打开的库。

dlopen打开模式如下:

RTLD_LAZY 暂缓决定,等有需要时再解出符号

RTLD_NOW 立即决定,返回前解除所有未决定的符号。

 3   通常我们编写的tweak插件之所以能依附上目标app 就是在于其安装后xx.dylib和xx.plist文件处在/Library/MobileSubstrate/DynamicLibraries/下,应用程序启动的时候系统会匹配加载指定对应bundleID的应用,以此将xx.dylib库注入到目标app中从而生效 。

       倘若发现可执行文件头部有__RESTRICT/__restrict这个section 则对应的xx.dylib库就不会被加载注入

上一篇下一篇

猜你喜欢

热点阅读