美文网首页
debugserver+lldb

debugserver+lldb

作者: 打碟的DJ | 来源:发表于2022-03-07 20:31 被阅读0次

概述

debugserver、lldb是协同工作的,debugserver依附在APP上,时刻监听APP的运行状态,并有控制APP执行的能力;lldb是在APP外部的,可以和debugserver建立连接,通过debugserver获取APP运行状态,并且能通知debugserver对APP做一些事情。在真机调试的时候,Xcode将debugserver加入到APP中,通过lldb来调试APP,那么同样也可以在iterm上对越狱手机上的任意APP进行调试。

LLDB的功能可以概括为以下四点:

  • 在指定的条件下启动程序;
  • 在指定的条件下停止程序;
  • 在程序停止的时候检查程序内部发生的事;
  • 在程序停止的时候对程序进行改动,观察程序的执行过程有什么变化。

debugserver 简介

debugserver运行在iOS上,顾名思义,它作为服务端,实际执行LLDB(作为客户端)传过来的命令,再把执行结果反馈给LLDB,显示给用户,即所谓的“远程调试”。在默认情况下,iOS上并没有安装 debugserver,只有在设备连接过一次Xcode,并在 Window→Devices菜单中添加此设备后,debugserver才会被Xcode安装到iOS的“/Developer/usr/bin/”目录下。

但是,因为缺少task_for_pid权限,通过Xcode安装的debugserver只能调试我们自己的App。

可以自己配置debugserver,也可以直接在 Cydia 上直接安装debugserver使用。

配置 debugserver

1、帮 debugserver 瘦身

将未经处理的debugserver从iOS拷贝到OSX中 的“~/Desktop/iPhoneResource/”目录下,命令如下:

scp -P 2222 root@localhost:/Developer/usr/bin/debugserver ~/Desktop/iPhoneResource/

<font color="red">
注意:

不要使用 iFunBox 拷贝到电脑上,IFunBox 拷贝后的不是 Mach-O 格式,是 data 格式,无法进行减肥操作。

</font>

查看设备对应的架构,我使用的是iphone 7,架构是 arm64 的;
真机(iOS设备)架构如下:

armv6: iPhone、iPhone 2、iPhone 3G、iPod Touch(第一代)、iPod Touch(第二代)

armv7: iPhone 3Gs、iPhone 4、iPhone 4s、iPad、iPad 2

armv7s: iPhone 5、iPhone 5c (静态库只要支持了armv7,就可以在armv7s的架构上运行)

arm64(注:无armv64): iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPad Air、iPad Air2、iPad mini2、iPad mini3

然后帮它减肥,进入~/Desktop/iPhoneResource/文件夹下,然后创建debugserver文件夹,再次进入debugserver文件夹下,创建arm64文件夹,然后进行减肥,命令如下:

# 减肥
lipo -thin arm64 debugserver -output ./arm64/debugserver

注意把这里的“arm64”换成你的设备所对应的 ARM。

2、给 debugserver 添加 task_for_pid 权限

~/Desktop/iPhoneResource/arm64目录下创建一个 en.pist 文件,内容如下:

<?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>run-unsigned-code</key>
    <true/>
    <key>get-task-allow</key>
    <true/>
    <key>task_for_pid-allow</key>
    <true/>
</dict>
</plist>

然后再当前目录下进行运行如下命令:

codesign -s - --entitlements en.plist -f debugserver

3、将处理过得debugserver拷贝回iOS

将经过处理的debugserver拷回iOS,并添加执行
权限,命令如下:

scp -P 2222 debugserver root@localhost:/usr/bin/

这里之所以把处理过的debugserver存放在iOS 的/usr/bin/下,而没有覆盖/Developer/usr/bin/下的原版debugserver,一是因为原版debugserver是不可写的,无法覆盖;二是因为/usr/bin/下的命令无须输入全路径就可以执行,即在任意目录下运 行debugserver都可启动处理过的debugserver

4、用debugserver启动或附加进程

debugserver最常用的2种场景,就是启动和附加进程,它们的命令都很简单,分别是:

debugserver -x backboard IP:port /path/to/executable

debugserver 会启动 executable ,并开启port端口,等待来自IPLLDB接入。

debugserver IP:port -a "ProcessName"

例如:

tsukasawatarukoutekiiPhone:~ root# debugserver -x backboard *:12345 /Applications/MobileSMS.app/MobileSMS
debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-1205.2.13
 for arm64.
Listening to port 12345 for a connection from *...

上面代码会启动MobileSMS,并开启12345的端口,来等待任意IP地址的LLDB接入。而:

tsukasawatarukoutekiiPhone:~ root# debugserver *:12345 -a "MobileSMS"
debugserver-@(#)PROGRAM:LLDB  PROJECT:lldb-1205.2.13
 for arm64.
Attaching to process MobileSMS...
Listening to port 12345 for a connection from *...

会附加到MobileSMS上,并开启12345端口来等待来自任意IP地址的LLDB接入。

5、LLDB的使用说明

使用方式

1、越狱手机启动 <font color="red">debugserver</font> 服务

debugserver ip:port –a appName ip 对应的手机ip直接使用*,port为对外开放的端口号(可以自定义)app为要附加的应用名称。

debugserver附加到微信进程上:

debugserver localhost:12345 –a WeChat

或者

debugserver *:12345 –a WeChat

相关文章

  • debugserver+lldb

    概述 debugserver、lldb是协同工作的,debugserver依附在APP上,时刻监听APP的运行状态...

  • debugserver+lldb使用

    一、概述 debugserver、lldb是协同工作的,debugserver依附在APP上,时刻监听APP的运行...

  • usbmuxd +debugserver+lldb 调试

    1、电脑本地1234端口转发到手机的22端口,执行: 2、上一窗口不关闭,另起窗口使用ssh连接到手机,并用deb...

  • [iOS Reverse]debugserver+lldb连接手

    上一篇成功挂载了钉钉进程,接下来是lldb的部分1.打开Mac中端,进入lldb 2.lldb连接手机 成功后会提...

  • [iOS Reverse]debugserver+lldb连接手

    前提安装homebrew然后安装dpkg、ldid在我的[iOS Hacking]logify日志追踪,锁定注入口...

网友评论

      本文标题:debugserver+lldb

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