iOS Hacker LLDB 和 debugserver 实例调试

lldb动态调试 LLDB动态调试 安装debugserver 阅读详情

LLDB 和 debugserver 实例调试

GDB 也可以调试 iOS 程序,但是效果不如苹果的 LLDB, LLDB 可以在程序运行的时候输入命令下断点,而 GDB 却不行。

一、LLDB 和 debugserver 的配置

  1. 插上手机,运行 Xcode,会将 debugserver 自动复制到手机上

  2. 到手机上下载 /Developer/usr/bin/debugserver 到 osx 上

  3. lipo -thin arm64 ~/debugserver -output ~/debugserver //给debugserver 减肥

  4. /opt/theos/bin/ldid -Sent.xml debugserver //给 debugserver 添加 task_for_pid 权限

  5. codesign -s - –entitlements ent.plist -f debugserver //如果上一条指令出错就试试这个

  6. 将处理完后的 debugserver 上传到手机 /usr/bin/debugserver 上

  7. chmod +x /usr/bin/debugserver //给 debugserver 设置权限

二、LLDB 和 debugserver 的连接方法

  1. debugserver *:1234 -a “MobileSMS” //附加进程MobileSMS进程, 开启1234端口,等待所有lldb来连接

  2. debugserver 192.168.4.75:1234 -a “MobileSMS” //附加进程,开启 1234端口, 等待 192.168.4.75 来连接

  3. debugserver -x backboard *:1234 /Applications/Calculator.app/Calculator //执行进程

三、实际调试

下面是一个调试实例

ios 上运行

debugserver *:1234 -a “SpringBoard”

osx 上运行 lldb

(lldb) process connectconnect://192.168.4.132:1234

Process 837 stopped

* thread #1: tid = 0x771a, 0x0000000199038e7clibsystem_kernel.dylib`mach_msg_trap + 8, queue = ‘com.apple.main-thread’, stopreason = signal SIGSTOP

frame #0: 0x0000000199038e7c libsystem_kernel.dylib`mach_msg_trap + 8

libsystem_kernel.dylib`mach_msg_trap:

-> 0x199038e7c <+8>: ret

libsystem_kernel.dylib`mach_msg_overwrite_trap:

0x199038e80 <+0>: movn x16, #0x1f

0x199038e84 <+4>: svc #0x80

0x199038e88 <+8>: ret

(lldb) c

Process 837 resuming

连接成功之后会断下来,输入 c 跑起来,相当于 windbg 里的 g

image list -o -f //显示加载的模块

[ 0]0x00000000000ec000/System/Library/CoreServices/SpringBoard.app/SpringBoard(0x00000001000ec000)

[ 1]0x000000010075c000/Library/MobileSubstrate/MobileSubstrate.dylib(0x000000010075c000)

[ 2]0x0000000006528000 /Users/boot/Library/Developer/Xcode/iOS DeviceSupport/8.1(12B411)/Symbols/System/Library/PrivateFrameworks/StoreServices.framework/StoreServices

[ 3]0x0000000006528000 /Users/boot/Library/Developer/Xcode/iOS DeviceSupport/8.1(12B411)/Symbols/System/Library/PrivateFrameworks/AirTraffic.framework/AirTraffic

[ 4]0x0000000006528000 /Users/boot/Library/Developer/Xcode/iOS DeviceSupport/8.1(12B411)/Symbols/System/Library/PrivateFrameworks/IOSurface.framework/IOSurface

[ 5]0x0000000006528000 /Users/boot/Library/Developer/Xcode/iOS DeviceSupport/8.1(12B411)/Symbols/System/Library/PrivateFrameworks/MultitouchSupport.framework/MultitouchSupport

[ 6]0x0000000006528000 /Users/boot/Library/Developer/Xcode/iOS DeviceSupport/8.1(12B411)/Symbols/System/Library/PrivateFrameworks/MobileWiFi.framework/MobileWiFi

[ 7]0x0000000006528000 /Users/boot/Library/Developer/Xcode/iOS DeviceSupport/8.1(12B411)/Symbols/usr/lib/libIOAccessoryManager.dylib

[ 8]0x0000000006528000 /Users/boot/Library/Developer/Xcode/iOS DeviceSupport/8.1(12B411)/Symbols/System/Library/PrivateFrameworks/IOMobileFramebuffer.framework/IOMobileFramebuffer

[ 9]0x0000000006528000 /Users/boot/Library/Developer/Xcode/iOS DeviceSupport/8.1(12B411)/Symbols/System/Library/PrivateFrameworks/BluetoothManager.framework/BluetoothManager

………………………………………………………

其他 lldb 相关的命令

ni //单步
si //步入

po x0po[ x0 class] //打印数据的 class
p (char*)$x1

b NSLog //给函数下断点
b [Network sendData:withFile:] //给类函数下断点
br -s -a address //给地址下断点
br -s -n main //给函数下断点
br l //查看断点
br del //删除所有断点
br del 1 //删除1号断点

register write 寄存器 值 //与寄存器
register read //查看所有寄存器的信息
register read $x0 //查看寄存器的值

dis //查看汇编代码
dis -a address //查看某个地址的汇编代码

x $x0 //查看内存
memory read address //读内存
memory write address xxx //写内存

br comand add 1 //断点添加
po $x0
c
DONE

//添加表达式,将 str 变量置空
expression
str = nil

四、通过 usb 连接 ssh 进行调试

由于某些情况下没有 wifi ,或者是网络环境比较差,网速很慢。这时候可以选择使用 usb 数据线连接 ssh 进行调试。使用 usb 的方式,连接速度很快。方法如下:
1. 把数据线接上,下载 usbmuxd 工具,下载地址。
2. 下载完成解压,切换到 python-client 目录,运行命令 python tcprelay.py -t 22:2222,相当于把 iOS 的 22 端口转发到电脑本机的 2222 端口。
3. ssh root@localhost -p 2222 //连接本机 2222 端口,相当于连接 iOS 的 ssh
4. debugserver *:1234 -a “SpringBoard” // 在 iOS 上开启 debugserver
5. python tcprelay.py -t 1234:12345 // 在 OSX 上运行,将 iOS 的 1234 端口转发到电脑本机的 12345 端口
6. lldb //运行 lldb
7. process connectconnect://localhost:12345 //连接本机的 12345 端口,开始你的调试吧

IOS逆向学习-动态调试原理、LLDB logify、Xcode运行原理 我们怎么知道微信点击红包之后调用了那个方法? 阅读详情

相关推荐

iOS小技能:给debugserver添加task_for_pid权限,以便调试从AppStore中获取的App。

前言在做iOS开发时,在Mac上输入LLDB的命令就可以控制iOS端的App,是因为在我们iOS客户端中有一个debugserver服务器。debugserver专门用来连接Mac端的LLDB客户端,接收LLDB所提供的命令,并且进行相应的执行。 如果你的iOS设备进行过真机调试的话,设备中就会被安装上debugserver, 不过该debugserver只能用来调试你自己的相关应用。 如果想要

专注于计算机研发知识和资讯分享 1万+

LLDB与debugserver

配置debugserver默认情况下iOS上并没有安装debugserver,因此需要设备链接一次Xcode,并在Window->Devices菜单中增加此设备后。会被安装到IOS的Developer/usr/bin/目录下。 瘦身 接下来我们将当前设备进行从IOS拷贝到我们的mac系统上,进行对debugserver进行瘦身 lipo -thin armv7s ~/debugserver -ou

细心程度决定你的成败 2230

PPO(Proximal Policy Optimization)算法原理及实现,详解近端策略优化

接着上面的讲,PG方法一个很大的缺点就是参数更新慢,因为我们每更新一次参数都需要进行重新的采样,这其实是中on-policy的策略,即我们想要训练的agent和与环境进行交互的agent是同一个agent;与之对应的就是off-policy的策略,即想要训练的agent和与环境进行交互的agent不是同一个agent,简单来说,就是拿别人的经验来训练自己。举个下棋的例子,如果你是通过自己下棋来不断提升自己的棋艺,那么就是on-policy的,如果是通过看别人下棋来提升自己,那么就是off-policy的。

weixin_41106546的博客 9万+

iOS逆向学习笔记之--LLDB动态调试目标程序

iOS逆向学习笔记之–LLDB动态调试目标程序 配置debugserver 1、将手机中的debugserver拷贝到Mac电脑上(前提是手机作为测试机使用过) scp root@192.168.0.15:/Developer/usr/bin/debugserver /Users/mac/Desktop/dump 2、查看debugserver架构然后瘦身去除其他架构 ma...

WJ的博客 1397

Cherry Studio部署MCP服务报错全记录:从零解决‘Connection closed‘问题

本文详细记录了在Cherry Studio中部署MCP服务时遇到‘Connection closed’报错的完整排查与解决过程。文章从环境依赖(UV、Bun)的安装验证、绝对路径配置、网络镜像源设置,到服务端手动调试与Cherry Studio配置检查,提供了一套系统性的解决方案,帮助开发者彻底解决此类连接问题。

g9h0i1的博客 766

A股历史数据免费下载终极指南:4000+个股数据一键打包获取

本文提供了获取A股历史数据的完整免费方案,重点介绍了Tushare Pro、AkShare等开源金融数据API的使用方法。通过详细的Python脚本示例,指导读者如何自动化批量抓取、清洗、存储4000多只个股的历史行情数据,并分享数据质量校验与性能优化技巧,助力量化研究与市场分析。

ooo22的博客 2252

iOS攻防 - (十二)LLDB和DebugServer配合使用

iOS攻防 - (十二)LLDB和DebugServer配合使用1.介绍debugserver是运行在iOS上。从它的名字你就能看出,debugserver扮演着一个服务器的角色,可以执行在MAC OS X客户端执行LLDB命令,并把结果反映到终端界面上,通常也成为”remote debugging”远程调试。debugserver默认在iOS系统里是没有的,但是,只要我们用Xcode在iPhone

VictorZhang 3736

ADS 使用教程(一)Workspace, Library and Cell

简要介绍ADS的基本内容

Dirge19的博客 6619

iOS逆向-利用LLDB动态调试app

实现命令"dump_encrypted"LLDB动态调试如同为逆向工程师装上“X光透视眼”,不仅能观察应用运行时的每个细节,更能实时干预逻辑走向。掌握本文所述技巧后,读者可快速定位关键代码、破解加密逻辑,甚至挖掘隐藏功能。但切记,技术探索需在合法合规的边界内进行。“技术是钥匙,但选择打开哪扇门取决于你。附录LLDB官方命令手册iOS Entitlements权限列表。

Sensitive_web_chaser的博客 3168

DeepSeek Harness“一切皆插件”核心机制详解

DeepSeek Harness 的“一切皆插件”核心 = Cordis 微内核 + 服务化能力接口 + 声明式依赖注入 + 类型化事件 + 可逆副作用 + 配置层 Profile/Bundle/Patch 组合。它的工程收益是:把模型、工具、循环、存储、UI 等所有 Agent 能力都变成“可从配置替换、可干净装卸”的单元,而不是写死在框架里。

软件行业技术文化交流。 603

笔试题-2023-星宸-数字IC设计【纯净题目版】

4 笔试题-2023-星宸-数字IC设计【纯净题目版】

w0shishabi的博客 1172

一步一步用debugserver + lldb代替gdb进行动态调试(整理与补充)

因为Apple已经弃gdb投lldb,所以随着我动态调试的次数越来越频繁,gdb上一个接一个的bug经常会让人很恼火。既然苹果打算建立自己的调试器王国,也投入了钱力精力,那我们干脆也上手lldb玩玩,看看lldb是不是比gdb要更好用(以下操作在iPhone 5,iOS 7.0.4上测试,应该也适用于arm64,如果不行,请参照iphonedevwiki) 一、定制lldb 1. 下载一个

zhangmiaoping23的专栏 1万+

AutoSAR系列讲解(入门篇)4.6-BSW的Watchdog功能

BSW的看门狗功能

雪云飞星的博客 1万+

SQLCipher加密数据库逆向分析:跨平台密钥提取与解密实战

数据库加密是数据安全领域的核心技术,通过AES-256等算法对存储内容进行保护,防止未授权访问。其原理是在文件层面实施透明加密,确保即使数据文件被窃取也无法直接读取。这项技术在移动应用、桌面软件等场景中具有重要价值,能有效保障用户隐私和商业机密。在实际工程实践中,当需要进行安全审计、数据恢复或遗留系统迁移时,如何对加密数据库进行授权分析成为关键挑战。本文聚焦于SQLCipher这一广泛使用的开源加密方案,深入探讨其逆向分析方法,涵盖内存提取、动态Hook等热词技术,以及跨平台工具链的构建与应用。

aikb6223的博客 649

4.4 直流无刷电机(BLDC):控制器硬件设计

摘要 本文详细阐述了直流无刷电机(BLDC)控制器的硬件设计要点。控制器硬件主要包括微处理器单元、功率驱动模块、信号检测电路、通信接口和电源管理模块。在微处理器选型方面,分析了ARM Cortex-M系列、DSP等架构的适用场景,并对比了不同处理器的性能参数。功率驱动模块设计重点包括栅极驱动电路、逆变桥热管理和电流保护机制。信号检测部分介绍了位置传感器接口和模拟信号调理技术。此外,还讨论了通信接口设计、电源管理方案以及硬件布局与EMC设计规范。最后强调了硬件测试验证的重要性,包括故障注入测试等验证方法。整体

技术工作者 185

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ios 让debugserver可以调试任意app

文章目录修改debugserver签名 修改debugserver签名 先从越狱手机上用ifunbox复制 Device\Developer\usr\bin目录下的debugserver 到mac上,然后终端进入mac下的文件目录 使用ldid修改签名 修改签名可以参考这篇文章 ios使用ldid给mach-o文件签名SpringBoard的权限突破沙盒 先把签名导出来 ldid -e debugserver > debugserver.entitlements 双击打开生成的文件 debugser

小手琴师的博客 2911

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

debugserver+lldb使用

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

yahibo的博客 2918

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Debugserver调试服务器error: failed to attach to process named: "" unable to start the exception thread...

环境:iOS 10.2.1 iPad Pro(已越狱) 拷贝手机上的debugserver 到电脑上 #scp root@192.168.1.115:/Developer/usr/bin/debugserver ./ 使用ldid从新进行签名 #ldid -e debugserver > debugserver.entitlements #ldid -Sdebugserver....

天道酬勤 1705

iOS逆向工程使用LLDB的USB连接调试第三方App

http://www.jb51.net/article/93097.htm 这篇文章主要介绍了iOS逆向工程使用LLDB的USB连接调试第三方App,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 LLDB是Low Level Debugger的简称,在iOS开发的调试中LLDB是经常使用的,LLDB是Xcode内置的动态调试工具。使用LLDB可以动态的调试你

jeffasd的专栏 1854

debugserver+lldb连接不上的解决办法

如无意外是可以正常连接的了。这句指令执行完一直卡住不动。

大炮哥的博客 607

IOS逆向(9)DebugServer + LLDB

debugserver在xcode第一次连接至手机时就会自动安装在目录/usr/bin/debugserver下,但此时的debugserver只能用来调试由xcode安装的app,如果想调试其他app就得对他进行赋权操作。

weixin_44282723的博客 3217

使用LLDB和debugserver对ios程序进行调试

在没有WIFI的情况下,使用USB连接IOS设备,使用辅助插件usbmuxd来辅助调试。我其实也想用wifi调试,奈何公司的wifi绑定了mac地址,而我又使用的是黑苹果虚拟机,使用桥接的方式修改网段也无法解决问题。没办法以后拷贝文件的用ifunbox,调试用usbmuxd。 要想实现通过debugserver连接lldb来调试ios设备,要满足四部: 1 .把本地2222端口...

weixin_30748995的博客 432

使用lldb 和debugsever 调试程序

lldb 大家应该很熟悉,已经被苹果集成到xcode开发工具中,我们平时写程序的时候,调试程序经常会打断点,程序运行到断点的地方会自动停下来,然后在控制台中就可以使用lldb 的命令来进行调试。 但是lldb是运行在osx 中的,要想调试iOS程序,还需要另一个工具,那就是lldb。 debug 运行在iOS中,顾名思义,它作为服务端,实际执行lldb 传过来的命令,再把执行结果反馈给lldb

再见依然的博客 4651

LLDB+debugserver动态调试

LLDB(Low Level Debugger) 内置于Xcode中的动态调试工具,通吃C,C++,OC,全盘支持OSX,iOS,iOS模拟器 在指定的条件下启动程序; 在指定的条件下停止程序; 在程序停止的时候检查程序内部发生的事; 在程序停止的时候对程序进行改动,观察程序的执行过程有什么变化 LLDB是运行在OSX中的,要想调试iOS,需要和debugserver进行配合. debugs

Esirnus 5741

IOS逆向--调试别人项目之准备debugserver

debugserver是运行在ios上,作为服务端,实际上执行LLDB(作为客户端)传过来的没命令,再把执行结果反馈给LLDB,显示给用户,即所谓的”远程调试”。在默认情况下,ios上并没有安装debugserver。需要设备连接Xcode,在window-->Devices菜单中增加此设备后,debugserver才会被Xcode安装到IOS设备的/Developer/usr/bin/目录下。注意

细心程度决定你的成败 3520

iOS逆向----调试之艰辛路

从5月12日到今天,一直在反反复复的测试

joosonmao的专栏 1万+
上一篇: 关于iOS沙盒的目录结构和获取
下一篇: 使用fastcoll进行md5碰撞,两个不同的文件md5值一样。
sysprogram
博客等级 码龄17年 298粉丝 442原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值