08-1-iOS逆向之动态调试App

一、什么是动态调试

  • 将程序运行起来,通过下断点、打印等方式,查看参数、返回值、函数调用流程等

二、Xcode的动态调试原理

在这里插入图片描述

  • 关于GCC、LLVM、 GDB、LLDB

    • Xcode的编译器发展历程: GCCLLVM
    • Xcode的调试器发展历程: GDBLLDB
  • debugserver 一开始存放在 Mac 的 Xcode 里面

    • /Applications/Xcode.app/Contents/Developer/Platforms/iPhone0S.platform/De viceSupport/9.1/DeveloperDisklmage.dmg/usr/bin/debugserver
      在这里插入图片描述
  • 当Xcode识别到手机设备时,Xcode会自动将debugserver安装到iPhone上

    • /Developer/usr/bin/debugserver
    • 注意: 这个文件夹是只读属性
      在这里插入图片描述
  • Xcode调试的局限性

    • 一般情况下,只能调试通过Xcode安装的APP

三、动态调试任意APP

在这里插入图片描述

3.1 debugserver的权限问题

  • 默认情况下,/Developer/usr/bin/debugserver缺少一定的权限,只能调试通过Xcode安装的
    APP,无法调试其他APP (比如来自App Store的APP)

  • 如果希望调试其他APP,需要对debugserver重新签名,签上2个调试相关的权限

    • get-task-allow
    • task_for_pid-allow

3.2 如何给debugserver签上权限

  • iPhone上的/Developer/目录是只读的,无法直接对/Developer/usr/bin/debugserver文件签
    名,需要先把 debugserver 复制到Mac
  • 通过Idid命令导出文件以前的签名权限
ldid -e debugserver > debugserver.entitlements
  • debugserver.entitlements 文件加上 get-task-allowtask_for_pid-allow 权限
    在这里插入图片描述
  • 通过Idid命令重新签名
ldid -Sdebugserver.entitlements debugserver
  • 将已经签好权限的 debugserver 放到 /usr/bin目录,便于找到debugserver指令
  • 关于权限的签名,也可以使用codesign
# 查看权限信息
$ codesign -d --entitlements - debugserver

# 签名权限
$ codesign -f -s - --entitlements debugserver.entitlements debugserver

# 或者简写为
$ codesign -fs- --entitlements debugserver .entitlements debugserver

3.3 让debugserver附加到某个APP进程

在这里插入图片描述

$ debugserver *:端口号 -a 进程
  • *:端口号
    • 使用iPhone的某个端口启动debugserver服务 (只要不是保留端口号就行)
  • a进程
    • 输入APP的进程信息(进程ID或者进程名称)

在这里插入图片描述

3.4 在Mac上启动LLDB,远程连接iPhone上的debugserver服务

在这里插入图片描述

  • 启动LLDB
~ » lldb                                                            
(lldb)
  • 连接debugsever服务
(lldb) process connect connect://手机IP地址:debugserver服务端口号
# 这里用的是手机的10011端口映射电脑的10011端口, 这样就可以直接使用电脑的10011端口了
process connect connect://localhost:10011

在这里插入图片描述

  • 使用LLDB的c(continue)命令让程序继续运行
(lldb) c
  • 接下来就可以使用LLDB命令调试App了

3.5 通过debugserver 启动 APP

$ debugserver -x auto *:端口号 APP的可执行文件路径
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值