• iOS逆向系列-动态调试


    Xcode调试App原理

    Mac安装了Xcode Xcode的安装包中包含了debugserver 可执行类型的Mach-O文件,iPhone第一次连接Xcode调试会将Xcode中的debugserver安装到iPhone上。

    debugserver在Xcode路径:

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/9.1/DeveloperDiskImage.dmg/usr/bin/debugserver

    debugserver安装到手机路径:/Developer/usr/bin/debugserver

    debugserver *:端口 -a App进程 使用iPhone的某个端口启动debugserver服务附加到某个App进程 监听LLDB指令

    Mac内置的LLDB可以远程连接iPhone上的debugserver服务发送LLDB指令

     

    动态调试任意APP 

    Xcode安装到手机中的debugServer只能调试Xcode安装的App,如果需要调试任意的App需要对debugserver重新签名。

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

    • get-task-allow
    • task_for_pid-allow

    如何给debugserver签上权限

    iPhone上的/Developer⽬目录是只读的,⽆无法直接对/Developer/usr/bin/debugserver⽂文件签 名,需要先把debugserver复制到Mac

    通过ldid命令导出⽂文件以前的签名权限

    ldid -e debugserver > debugserver.entitlements

    给debugserver.plist⽂文件加上get-task-allow和task_for_pid-allow权限 

    通过ldid命令重新签名

    ldid -Sdebugserver.entitlements debugserver

    将已经签好权限的debugserver放到/usr/bin⽬目录,便便于找到debugserver指令

    让debugserver附加到某个APP进程

    远程连接iPhone 执行指令

    debugserver *:端⼝口号 -a 进程

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

    启动LLDB

    $ lldb
    (lldb)

    连接debugserver服务

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

    使⽤用LLDB的c命令让程序先继续运⾏行行

    (lldb) c
  • 相关阅读:
    学习八数码拓展
    jzoj4762. 千帆渡
    jzoj5354. 导弹拦截
    学习上下界网络流小记
    jzoj2702. 探险&jzoj3917. 【NOIP2014模拟11.2A组】福慧双修
    jzoj100048. 紧急撤离
    jzoj100045. 好数
    jzoj3327. 陶陶的难题
    2368. 黑白棋
    学习类欧几里得小记
  • 原文地址:https://www.cnblogs.com/CoderHong/p/10899347.html
Copyright © 2020-2023  润新知