iOS 逆向入门 - 绕过抖音反调试
一、背景 在「iOS 逆向入门 - TikTok 调试」文章中介绍了使用 MonkeyDev 工具对 TikTok 进行调试。使用同样的方法对抖音进行调试的过程中遇到了几个问题,在这里记录一下。 二、动态库注入失败 按照 TikTok 的方式运行后,发现控制台没有打印 insert dylib success 的信息,猜测动态库注入失败了,果然在编译信息的输出中找到相关错误打印: 在 MonkeyDev 的 change.log 中找到信息,尝试恢复使用 optool 工具注入动态库。 下载 optool 的二进制文件并复制到相应位置,然后修改以下代码: # 注释原来的 MONKEYPARSER # "$MONKEYPARSER" install -c load -p "@executable_path/Frameworks/lib""${TARGET_NAME}""Dylib.dylib" -t "${BUILD_APP_PATH}/${APP_BINARY}" # 修改为 optool OPTOOL="${MONKEYDEV_PATH}/bin/optool" "$OPTOOL" install -c load -p "@executable_path/Frameworks/lib""${TARGET_NAME}""Dylib.dylib" -t "${BUILD_APP_PATH}/${APP_BINARY}" 重新编译运行后可发现控制台中出现 insert dylib success 信息,证明动态库已经注入成功。 三、绕过反调试 动态库注入成功后,发现控制台没有了任何输出,且 lldb 已经断开,证明抖音使用了某种反调试手段。 1、反调试常规手段 1)ptrace ptrace 被常用于防止 lldb 依附,原理是一个进程只能被 ptrace 只能被一次,先于别人调用 ptrace 则可以防止别人依附。...