动态调试

作者: 风雨彩虹_123 | 来源:发表于2021-07-03 14:51 被阅读0次

Xcode动态调试原理

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

Xcode的调试器发展历程:GDB -> LLDB ,LLDB 是基于GDB开发的。

动态调试原理

debugserver 是配合LLDB做动态调试必不可少的程序,必须将debugserver放入到手机中才能起作用。当Xcode识别到手机设备时,Xcode会自动将debugserver安装到iphone上 /Developer/usr/bin/debugserver ,该bin目录下的文件是只读的,不能修改。

debugserver在iPhone的路径

Xcode真机调试流程:

1.Xcode打开项目;

2.通过数据线链接手机;

3.在需要的地方添加断点;

4.点击run,将程序跑到手机上;

Xcode会自动将LLDB连接到手机上的debugserver上,debugserver也会与当前运行程序建立链接。
LLDB下发指令传输到手机上的debugserver,debugserver通过监听APP运行进程下发指令,APP执行了命令后将结果返回debugserver,debugserver再传输给LLDB,最总有LLDB将结果打印在控制台上。

Xcode动态调试的局限性:只能调试通过Xcode安装的APP。

动态调试任意APP

动态调试任意APP原理

1.制作调试任意APP的debugserver,Xcode帮我们自动生成的只能调试Xcode运行的APP,不能调试其他的APP。将手机/Developer/usr/bin/中的debugserver拷贝到桌面。

2.对debugserver进行权限签名,需要添加能够调试任意APP的权限。

3.使用ldid 导出debugserver的权限文件并添加权限。

ldid -e debugserver > debugserver.entitlements
//将下面2个权限添加到debugserver.entitlements中
get-task-allow   : YES
task_for_pid-allow    :   YES 

4.使用ldid 进行对添加的权限签名,然后将签名后的debugserver拷贝到手机的/usr/bin目录下

ldid -Sdebugserver.entitlements debugserver

5.debugserver 监听微信APP 进程
debugserver *:10011 -a WeChat

6.连接debugserver服务

(lldb) process connect connect://手机IP地址:debugserver服务端口号
# 使用Python 脚本去映射
# 这里用的是手机的10011端口映射电脑的10011端口, 这样就可以直接使用电脑的10011端口了
process connect connect://localhost:10011

相关文章

  • IOS逆向_动态调试:debugserver

    1. 动态调试的概念; 2. Xcode动态调试的原理; 3. 通过debugserver调试APP; 1. 动态...

  • 十二 iOS逆向-动态调试

    动态调试概念 Xcode动态调试原理 调试任意第三方App LLDB简介 一 动态调试概念 就是在程序运行的过程中...

  • iOS安全防护方案

    1.阻止动态调试 GDB、LLDB是Xcode内置的动态调试工具。使用GDB、LLDB可以动态的调试你的应用程序(...

  • iOS逆向工程(八):动态调试

    动态调试 一、什么是动态调试 动态调试就是将程序运行起来,通过打断点、打印等方式,查看参数、返回值、函数调用流程等...

  • iOS逆向工程(八):动态调试

    动态调试 一、什么是动态调试 1.动态调试就是将程序运行起来,通过打断点、打印等方式,查看参数、返回值、函数调用流...

  • Nexus 5X如何开启系统调试,如何root

    一、如何开启系统调试 很多时候我们逆向app的时候就会需要动态调试,动态调试需要修改AndroidManifest...

  • iOS 项目中安全相关

    动态调试攻击风险 非 DEBUG 模式下禁止调试

  • 动态调试

    动态调试简介 将程序运行起来,通过下断点,打印等方式,查看参数,返回值,函数调用流程等。 Xcode的动态调试原理...

  • 动态调试

    Xcode动态调试原理 动态调试就是将程序运行起来,通过下断点、打印等方式查看参数、返回值、函数调用流程等。 Xc...

  • 动态调试

    一、什么叫动态调试 将程序运行起来,通过下断点、打印等方式,查看参数、返回值、函数调用流程等。 二、Xcode的动...

网友评论

    本文标题:动态调试

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