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逆向系列-动态调试的更多相关文章

  1. iOS逆向系列-逆向APP思路

    界面分析 通过Cycript.Reveal. 对于Reveal安装配置可参考配置iOS逆向系列-Reveal 通过Reveal找到内存中的UI对象 静态分析 开发者编写的所有代码最终编译链接到Mach ...

  2. iOS逆向系列-脱壳

    概述 通过iOS逆向系列-逆向App中使用class-dump工具导出App的Mach-O文件所有头文件.Hopper工具分析App的Mach-O文件代码大概实现.但是这些前体是App的Mach-O没 ...

  3. [转]Android逆向之动态调试总结

    一.在SO中关键函数上下断点 刚学逆向调试时.大多都满足于在SO中某关键函数上下断点.然后通过操作应用程序,去触发这个断点,然后进行调试 详细的步骤可以参见非虫大大的<Android软件安全与逆 ...

  4. apk逆向 - smali动态调试

    author: Dlive date: 2016/10/6 0x00 前言 ​ 之前有人问过smali的动态调试方法,其实网上已经有很多文章讲这些内容,但是为了方便大家学习,我还是写一下让大家少走点坑 ...

  5. 【Android 逆向】动态调试AliCrackme_1

    1 试玩 apk # 安装APK到真机 adb install AliCrackme_1.apk 打开apk,投石问路,输入123试一下 2 将apk 拖入androidKiller,得到反编译的sm ...

  6. iOS逆向系列-tweak补充

    tweak加载资源 开发自己的deb插件需要加载自己的资源,比如图片资源.iOS中常用的两种加载图片资源的方式: + (nullable UIImage *)imageNamed:(NSString ...

  7. iOS逆向系列-Mach-O文件

    概述 Mach-O是Mach object的缩写,是Mac\iOS上用于存储程序.库的标准格式. 常见的Mach-O文件 属于Mach-O格式的文件类型有. 可以在xnu源码中,查看到Mach-O格式 ...

  8. iOS逆向系列-Reveal

    概述 Reveal是一款调试iOS程序UI界面的神器. 官网地址:https://revealall.com 下载:https://revealapp.com/download/ 建议下载Reveal ...

  9. iOS逆向系列-Cycript

    概述 Cycript 是Objective-C++.ES(JavaScript).Java等语法的混合物. 可以用来探索.修改.调试正在运行的Mac\iOS App. 通过Cydia安装Cycript ...

随机推荐

  1. Java学习之DOS基础

    Dos命令行dir:列出当前目录下的文件和文件夹md :创建目录rd :删除目录cd :进入指定目录cd..:退回到上一级目录cd/:退回到根目录del:删除文件exit:退出dos命令行 进入dos ...

  2. form提交跳转问题

    $.ajax({ type: "POST", url: url, data: $('.form-horizontal').serialize(), 提交form表单 success ...

  3. 前端(二十三)—— Vue环境搭建

    目录 一.Vue环境搭建 一.Vue环境搭建 1.安装node 去官网下载node安装包 傻瓜式安装 万一安装后终端没有node环境,要进行node环境变量的配置(C:\Program Files\n ...

  4. 两种接口传送数据协议(xml和json)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/tianyazaiheruan/article/details/37659983    规范性接口开发 ...

  5. pytest_fixture--scope="session"

    import pytest@pytest.fixture(scope="session")def login(): print("\n输入用户名密码登陆! configt ...

  6. html-基础知识二

    form 功能:向服务器传输数据,实现用户和web 服务器的交互 一.表单属性 accept-charset: 规定在提交表单中使用的字符集 action:规定向何处提交表单地址(url) autoc ...

  7. 【转】console.dir()和console.log()的区别

    原文链接:https://blog.csdn.net/ky1in93/article/details/80828499 console对象详解:https://segmentfault.com/a/1 ...

  8. 借用数组对象的prototype给数组扩充降维方法

    原理:只要是一个对象,他都有一个prototype原型对象,保存共有的属性和方法. <!DOCTYPE html> <html lang="en"> < ...

  9. 安装php 在阿里云yum源的环境

    yum -y install httpd mysql mysql-server php php-mysql postgresql postgresql-server php-postgresql ph ...

  10. Wordpress 文章编辑页面添加 metabox

    add_meta_box($id,$title,$callback,$screen,$context:,$priority); 参数 $id (字符串)(必需)Meta模块的 HTML"ID ...