美文网首页
Xcode的动态调试任意的APP

Xcode的动态调试任意的APP

作者: GeniusWong | 来源:发表于2018-10-21 21:30 被阅读144次

    Xcode的动态调试原理

    • debugServer 一直存放在Xcode的文件夹里
    • 当Xcode识别到手机后,Xcode自动将debugServer安装在手机上的 Developer/usr/bin目录下;
    • Mac上,Xcode通过 LLDB 跟手机上的 debugServer 连接来达到动态调试的目的;

    怎么动态调试所有的APP呢?

    • 获取文件的权限列表:
      ldid -e debugserver > debugserver.entitlements
    • 给debugserver签上权限
      添加get-task-allow task_for_pid-allow 这两个bool = YES属性到 debugserver.entitlements 文件;
    • 通过 ldid 命令重新签名
      ldid -Sdebugserver.entitlements debugserver
    • 将已经签好权限的debugserver放到 /usr/bin 目录

    关于权限的签名,也可以使用codesign

    查看权限信息

    $ codesign -d --entitlements - debugserver

    签名权限 􏲬􏰻􏲖􏲌

    $ codesign -f -s - --entitlements debugserver.entitlements debugserver

    或者简写为

    $ codesign -fs- --entitlements debugserver.entitlements debugserver

    • 让debugserver附加到某个APP进程

    debugserver *:端口号 -a 进程

    • 端口号:
      使用iPhone的某个未占用的端口启动debugserver服务
    • 进程
      输入APP的进程信息,进程ID或进程名称

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

    • 启动LLDB

    lldb

    • 连接debugserver服务

    (lldb) process connect connect://手机IP地址:debugserver端口号

    • 使用LLDB的c命令让程序继续运行

    (lldb) c

    使用LLDB命令调试APP

    • 通过debugserver启动APP

    debugserver -x auto *:端口号 app的可执行文件路径

    相关文章

      网友评论

          本文标题:Xcode的动态调试任意的APP

          本文链接:https://www.haomeiwen.com/subject/nhrizftx.html