当前位置: 首页 > news >正文

iOS调试中debugserver常见问题详解:连接失败、权限错误与反调试应对

常见问题

Failed to get connection from a remote gdb process

  • 现象

debugserver去调试抖音:

debugserver -x auto 0.0.0.0:20221 /private/var/containers/Bundle/Application/9AB25481-0AD3-435C-A02E-68F9623535BB/Aweme.app/Aweme

报错:

iPhone7P-1341:~/forDebug root# debugserver -x auto 0.0.0.0:20221 /private/var/containers/Bundle/Application/9AB25481-0AD3-435C-A02E-68F9623535BB/Aweme.app/Aweme debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-900.3.104 for arm64. Listening to port 20221 for a connection from 0.0.0.0... Failed to get connection from a remote gdb process. Exiting.

  • 原因

(iPhone7P中的)debugserver,多了额外的权限:

  • com.apple.security.network.server
  • com.apple.security.network.client
  • seatbelt-profiles

导致,不允许连接进程(去调试)

  • 解决办法:去掉权限
  • 具体步骤
    用去掉了上述权限:
<key>seatbelt-profiles</key> <array> <string>debugserver</string> </array> ... <key>com.apple.security.network.server</key> <true/> <key>com.apple.security.network.client</key> <true/>

的entitlements文件:

  • debugserver_noSecurity.entitlements
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.springboard.debugapplications</key> <true/> <key>com.apple.backboardd.launchapplications</key> <true/> <key>com.apple.backboardd.debugapplications</key> <true/> <key>com.apple.frontboard.launchapplications</key> <true/> <key>com.apple.frontboard.debugapplications</key> <true/> <key>com.apple.private.logging.diagnostic</key> <true/> <key>com.apple.private.memorystatus</key> <true/> <key>com.apple.private.cs.debugger</key> <true/> <key>get-task-allow</key> <true/> <key>task_for_pid-allow</key> <true/> <key>run-unsigned-code</key> <true/> </dict> </plist>

加到debugserver中 == 重新给debugserver签名:

  • 推荐用codesign
codesign -f -s - --entitlements debugserver_noSecurity.entitlements debugserver
  • iOS < 15也可以用ldid

    ldid -Sdebugserver_noSecurity.entitlements debugserver

再放到iPhone中==拷贝到iPhone中

scp debugserver root@192.168.0.58:/usr/bin

即可。

Failed to open log file for writing: errno = 1 (Operation not permitted)

  • 现象

用debugserver调试程序,带日志参数:

debugserver -l debugservr_20220107_1050.log 0.0.0.0:20221 -a 8829

报错:

iPhone7P-1341:~ root# debugserver -l debugservr_20220107_1050.log 0.0.0.0:20221 -a 8829 Failed to open log file 'debugservr_20220107_1050.log' for writing: errno = 1 (Operation not permitted)debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-900.3.104 for arm64. ...
  • 原因
    • 表面原因:debugserver没有写入(日志文件的)权限

    • 深层次原因:当前debugserver的权限entitlements中有:

      <key>seatbelt-profiles</key> <array> <string>debugserver</string> </array>
      • 意思是,给debugserver开启了Sandbox
        • 导致:没有(各种的,包括文件)写入的权限
  • 解决办法:把debugserver的entitlements权限中去掉:
<key>seatbelt-profiles</key> <array> <string>debugserver</string> </array>
  • 注:再重签名debugserver,写回iPhone,即可。

Segmentation fault: 11

  • 现象

debugserver调试抖音,报错:

iPhone7P-1341:~ root# debugserver 0.0.0.0:20221 -a 8829 debugserver-@(#)PROGRAM:LLDB PROJECT:lldb-900.3.104 for arm64. Attaching to process 8829... Segmentation fault: 11
  • 原因:此处的iOS的app,抖音,内部做了反调试,使得此处调试中断,无法继续调试
  • 解决办法:深入逆向对应app,找到反调试的逻辑,进行反反调试
    • 概述
      • 此处抖音的反调试手段是:二进制AwemeCore中用svc 0x80的内联汇编实现的syscallptracePT_DENY_ATTACH
      • 此处反反调试=破解反调试的手段是:把AwemeCore中的svc 0x80指令替换成空指令=NOP指令

对于更全面的iOS应用安全保护,可以使用混淆工具如IpaGuard。IpaGuard是一款强大的iOS IPA文件混淆工具,无需源码即可对代码和资源进行混淆加密,支持多种开发平台,有效增加反编译和反调试难度。

http://www.cnnetsun.cn/news/2055734.html

相关文章:

  • TikTok Shop图片总被驳回?AI套图直接生成平台合规图
  • Aiadmin-3个月拆了1000个爆款标题,最后浓缩在这条指令里
  • Kronos部署教程:构建智能任务执行平台
  • 2026金三银四Java岗最全面试攻略,吃透25个技术栈Offer拿到手软
  • 算法训练营第十三天|454.四数相加II
  • 程序员必看:符号解析的底层原理与实战避坑指南(附GCC命令详解)
  • 13、理想变压器的工作原理详解
  • 极限概念解析与计算方法全攻略
  • NCMconverter:3步解锁网易云加密音乐,让音乐真正属于你
  • 新榜智汇:具备合规化运营能力的中大型企业GEO营销工具
  • 宝藏级|摩羯座影视(mojiez.com):全站免费!4K/原盘/网盘/BT种子下载一站搞定
  • jenkins配置前端部署
  • 告别点灯焦虑:用STM32CubeMX快速配置蓝桥杯G431开发板的GPIO与时钟
  • 【Android】告别手机小屏:在PC端无缝操控Termux Linux终端的完整指南
  • 【WinForm UI控件系列】Blower 鼓风机控件
  • 预测建模实战指南:从原理到应用
  • 瑞德克斯的点差和费用如何?
  • 【STM32CubeMX】 生成 Keil 工程报错:error L6236E No section matches selector - no section to be FIRSTLAST
  • 采用Python语言,通过训练情绪识别数据集 基于深度学习中的卷积神经网络(CNN)实现语音情绪识别。基于深度学习的语音情绪识别。建立识别7种情绪基于深度学习的语音情绪识别
  • 上海物联网应用开发及物联网设备集成开发实战指南:从协议适配到全链路交付的技术路径
  • python functools
  • 外资车为保命加大力度降价,份额回升,国产电车涨价幻想或破灭
  • 4Cell Remosaic技术解析:手机摄影的“明暗双修”之道
  • 专利资产成熟度认证白皮书解读(八)
  • IC后端CTS入门:为什么大佬们都爱用反相器(Inverter)而不是Buffer来建时钟树?
  • 告别臃肿镜像!5分钟学会用Alpine Linux的apk命令精简你的Dockerfile
  • 别再手动转格式了!用CAD Exchanger SDK在C++项目中实现多格式CAD文件自动读写(附完整代码示例)
  • LIWC文本分析:如何用Python解锁语言背后的心理密码?
  • 手把手带你用现代仿真软件(如LTspice)复现真空三极管的放大原理
  • 保姆级教程:在VS Code里配置C++调用gnuplot画图环境(Windows 11实测)