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
最新文章
- iOS开发系列--Swift 3.0
- [ES] 基础概念
- matlab练习程序(多边形顶点凹凸性)
- int main(int argc,char* argv[]) 简单理解
- Linux操作系统
- arcgis engine - 鹰眼在栅格图无法显示.
- Chrome退出全屏问题
- 护肤品总结 Skin Care (2)
- winsock开发重复定义问题
- linux学习笔记之线程同步机制
- mysql server advanced 5.6基于oracle linux 6.6的安装
- YII重点文件
- 调用WCF的异步方法
- Java之String类型详解
- JAVA程序员面试30问(附带答案)
- linux基础命令--userdel 删除用户帐户和相关文件
- K8s+jenkins实现提升效率 —— 一些小记录
- hdu 3033(好题,分组背包)
- Python 标准库 ConfigParser 模块 的使用
- 【xsy3423】党² 线段树+李超线段树or动态半平面交
热门文章
- 4.2.1 Vector bit-select and part-select addressing
- &;与&;&;,|与||的区别
- BOM的构成
- spring mvc 配置后,web中的html页面报404,该怎么处理
- centos7 安装KDE
- redis设置自动启动
- shell实现批量创建交叉编译工具软链接
- Echart中X轴为时间坐标刻度时,后台返回时间List被强制转化为时间戳问题
- [转]PHP base64_encode 在URL地址参数编码上使用
- html中没有不能随意嵌套的标签