iOS逆向动态调试

article/2025/10/19 13:49:12

1.拷贝越狱手机/Developer/usr/bin目录下的debugserver到Mac电脑,在mac端输入

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

2.对debugserver进行瘦身(iOS11可以不用瘦身,因为只支持64位构架的程序),在debugserver所在目录输入lipo -info debugserver . 在终端输入:lipo -thin armv7 debugserver -output debug-server

3.在xcode里新建一个plist文件

<plist version="1.0"><dict><key>com.apple.springboard.debugapplications</key><true/><key>get-task-allow</key><true/><key>task_for_pid-allow</key><true/><key>run-unsigned-code</key><true/></dict>
</plist>

然后把plist文件拷贝到电脑的debugserver同一个目录下 ,在终端输入

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

可以给我们的debugserver赋上task_for_pid权限。

4.然后在终端里输入: codesign -d --entitlements - ./debugserver

查看授权文件描述, plist文件写入的东西

5.终端里输入: scp -P 2222 ./debugserver root@localhost:/usr/bin/debugserver

将debugserver拷贝到手机

6.ps aux 查看手机进程

7.Mac切换到手机 cd /usr/bin/ 以后, 输入chmod +x debugserver,给权限

10.debugserver *:1234 -a WhatsApp
或者

root# debugserver *:1234 -x auto
/var/containers/Bundle/Application/24550860-1E7B-4A59-9753-9E7040DF0DAA/WMMimi.app/WMMimi

通过usb-replay的方式连接debugserver,

(lldb) process connect connect://localhost:1234

报错了

lldb窗口报:

error: failed to get reply to handshake packet

debugserver窗口报:

error: rejecting incoming connection from ::ffff:127.0.0.1 (expecting ::1)

解决:

把debugserver启动试设置的监听 *:1234 改成 localhost:1234

root# debugserver localhost:1234 -x auto
/var/containers/Bundle/Application/24550860-1E7B-4A59-9753-9E7040DF0DAA/WMMimi.app/WMMimi

process connect connect://localhost:1234,

没做端口转发输入

process connect connect://IP

12.连接成功后,输入c继续,然后image list -o -f ,获取基地址

13.拷贝基地址,然后在Hopper里运行你砸完壳以后的 可执行文件,然后找你想调试的函数名,记录下这个函数名的偏移地址,

然后在终端输入br s -a ’基地址+0x偏移地址’,开始断点调试。
在这里插入图片描述如果报错:

warning: failed to set breakpoint site at 0x00000000014cc35 for breakpoint 1.1: error: 0 sending the breakpoint request

先试一下用image list 获取基地址,因为跟image list -o -f获取的地址是不一致的,在打一下断点试试, 如果还是失败,那么用ida去获取mach-o 头的偏移量
在这里插入图片描述
br s -a ’基地址+0x偏移地址-0x100000000’ 设置断点成功,
使用

di --start-address '0x0000000100da4000+0x00000000014cc3e4' -count 10

查看,如果和hooper或者ida里的一致,说明打的断点的位置是正确的
在这里插入图片描述
如果不一致,那么你就需要用file 命令查看一下这个macho

file xxFramework

在这里插入图片描述dynamically说明是动态库,那么image list 就去找动态库的加载地址(而不是主二进制的)下断点

Frameworks/xxramework.framework/xxFramework 

http://chatgpt.dhexx.cn/article/pbDofIWx.shtml

相关文章

ios逆向学习环境安装(一)

1、Xcode 历届版本&#xff1a;https://developer.apple.com/documentation/xcode-release-notes AppStore中搜并安装XCode & 在网页下载https://developer.apple.com/xcode 2、class-dump class-dump&#xff0c;是可以把Objective-C运行时的声明的信息导出来的工具。其实…

ios android 逆向 对比,iOS逆向开发--APP重签名

签名原理 在非越狱手机上要调试一个三方的APP&#xff0c;我们首先要对其重签名&#xff0c;跑在我们的手机上&#xff0c;我们才能对其进行进一步的动态和静态调试 要对一个APP包进行重签名&#xff0c;要有一个越狱的APP包&#xff0c;这个可以去PP助手上下载&#xff0c;也可…

IOS逆向-抓帧分析

背景 分析图形学、游戏等的时候&#xff0c;很多时候需要抓帧分析 步骤 动态调试APP点击 点击FPS&#xff0c;触发渲染&#xff0c;查看面板是否有数据点击&#x1f4f7;按钮&#xff0c;触发渲染再次点击&#x1f4f7;按钮&#xff0c;结束抓帧 问题 FPS数据面板没有数据…

IOS逆向-动态调试

文章目录 LLDBXcode重新签名版本调试(手动) ✅重新签名版本调试(自动)不重新签名版本调试 LLDB Xcode -> Attach -> 点击 || 按钮 -> 使用lldb终端 手机/Developer/usr/bin/debugserver localhost:2233 /var/containers/Bundle/Application/*/*/xxxx电脑 lldb -> …

IOS逆向初探

前言 这些文章用于记录学习路上的点点滴滴&#xff0c;也希望能给到刚入门的小伙伴们一点帮助。爱而所向&#xff0c;不负所心。 环境 iphone 6 MacOS Monterey 12.3.1 一、IOS开发语言 Objective-C Objective-C是iOS操作系统运用的软件开发语言。Objective-C的流行完全是因…

移动App入侵与逆向破解技术-iOS篇

如果您有耐心看完这篇文章,您将懂得如何着手进行app的分析、追踪、注入等实用的破解技术,另外,通过“入侵”,将帮助您理解如何规避常见的安全漏洞,文章大纲: 简单介绍ios二进制文件结构与入侵的原理介绍入侵常用的工具和方法,包括pc端和手机端讲解黑客技术中的静态分析和…

C#应用程序与MATLAB联合编程

本文主要结合C#编写应用程序方便强大和MATLAB在工业科学界的广泛应用&#xff0c;结合两者的优点&#xff0c;利用C#编写的windows桌面应用程序作为UI交互接收用户配置&#xff0c;并根据用户在前端应用界面的操作自动控制MATLAB运行&#xff0c;并将MATLAB计算的结果返回桌面应…

编程输出中文变问号的解决办法

问题是出现在windows的dos显示设置上。 如何解决这个问题&#xff1f; 1.打开运行&#xff0c;输入cmd&#xff1b; 2.界面顶部右键&#xff0c;option中选择默认值&#xff1b; 3.将437&#xff08;OEM-美国&#xff09;改为936&#xff08;ANSI/OEM-简体中文GBK&#xff09; …

Python入门(二)-编程环境

本章重点介绍 Python 编程环境的搭建&#xff0c;包括各个平台下 Python 的下载和安装&#xff0c;常见 IDE 的使用&#xff0c;如何运行 Python 程序等。我还会亲自带着大家编写并运行第一个 Python 程序&#xff0c;让大家认识一下最简单的 Python 代码。 本章的后半部分还介…

数模混合信号建模语言Verilog-AMS

混合信号建模语言Verilog-AMS 很多人做模拟电路的朋友&#xff0c;都希望有一款“模拟FPGA”&#xff0c;希望有一个“模拟的Verilog”&#xff0c;但现实是没有“模拟的Verilog”只有混合信号建模语言-Verilog-AMS&#xff0c;今天就简单介绍一下-Verilog-AMS。 为了便于物理系…

Java入门-Java语言概述

1、Java语言基本概述 1.1、什么是计算机编程语言 人与人之间是如何沟通的呢&#xff1f;从小父母就教会我们说话&#xff0c;在长期的熏陶和自我学习中&#xff0c;我们就学会了普通话&#xff0c;学会了表达自己的需求&#xff0c;父母收到我们的信号或者听到我们的要求也会尽…

Python 批量下载BiliBili视频 打包成软件

文章目录 一、项目概述1.项目背景2.环境配置下载ffmpeg设置环境变量 二、项目实施1.导入需要的库2.设置请求参数3.基本处理4.下载视频5.视频和音频合并成完整的视频6.3种下载方式的分别实现7.主函数 三、项目分析和说明1.结果测试改进说明2.软件打包3.改进分析4.合法性说明 如有…

Java 之父 James Gosling 最新访谈:JIT 很好,但不适合所有语言

计算机编程确实是一门艺术。 James Gosling&#xff0c;“Java 之父”, 完成了 Java 的原始设计&#xff0c;并实现了 Java 最初版本的编译器和虚拟机。 90年代初&#xff0c;James Gosling和一群技术人员合作“绿色计划”&#xff0c;创建了一个名为Oak的项目&#xff0c;旨在…

Python语言概述及其运行机制详解

即日起&#xff0c;我们将打开一个新的编程世界的大门——Python语言。Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言&#xff0c;最初被设计用于编写自动化脚本(shell)&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越来越多被用于独…

go语言开发环境搭建

Go 是一个开源的编程语言&#xff0c;它能让构造简单、可靠且高效的软件变得容易。 Go语言专门针对多处理器系统应用程序的编程进行了优化&#xff0c;使用Go编译的程序可以媲美C或C代码的速度&#xff0c;而且更加安全、支持并行进程。 学习Go一部分是兴趣&#xff0c;一部分是…

汇编语言程序运行过程分析

实验项目程序运行过程分析综合性实验2020年11月 18日 一、实验综述 1.实验目的及要求 &#xff08;1&#xff09;掌握程序执行具体过程 &#xff08;2&#xff09;构建汇编语言的运行环境 &#xff08;3&#xff09;掌握汇编语言的编译连接过程 &#xff08;4&#xff09;掌…

【x86汇编】第六章 输出/输出和win32编程

文章目录 输入/输出指令和数据的传送方式输入/输出指令输入指令IN输出指令OUT串输入指令INS串输出指令OUTS 数据的传送方式无条件传送查询传送直接存储器中断传送 中断与异常中断的概念不可屏蔽中断 NMI可屏蔽中断 INTR除法出错溢出调试异常&#xff08;单步&#xff09;软中断…

总算编译通过了《自制编程语言》一书里的代码!

起初按照书里的说明来搭建Windows下的环境&#xff0c;卡在下载和编译正则表达式库“鬼车”的地方&#xff0c;后来留言给作者&#xff0c;才知道这个库已经转移到github上了&#xff08;2018年4月25时点&#xff1a;https://github.com/kkos/oniguruma&#xff09;&#xff0c…

脑语言v0.5.8 2500令【单字编程】

脑语言v0.5.8 2500令【单字编程】 【号】【单字】【多字】【英文】 1 1脑 脑语言 naoyuyan 2 配 配置 config 3 班 班级 grade 4 令 指令 command 5 述 描述 description 6 横 ■横 ■x 7 纵 ■纵 ■y 8 深 ■深 ■z 9 宽 ■宽 width 10 高 ■高 height 11 撑 缩放…

p4 编程语言环境配置

文章目录 前言建议直接看第二种方法第一种方法&#xff1a;p4官方教程里的方法&#xff08;不建议&#xff0c;我没安装成功&#xff09;1.1 下载并安装 Virtual Box1.2 下载并安装 Vagrant1.3 利用 Vagrant 安装虚拟机 第二种方法&#xff1a;直接导入已经配置好的虚拟镜像文件…