当前位置: 首页 > news >正文

iOS 逆向学习 - iOS Architecture Cocoa Touch Layer

iOS 逆向学习 - iOS Architecture Cocoa Touch Layer

      • 一、Cocoa Touch Layer 简介
      • 二、Cocoa Touch Layer 的核心功能
        • 1. UIKit
        • 2. Event Handling(事件处理)
        • 3. Multitasking(多任务处理)
        • 4. Push Notifications(推送通知)
        • 5. Social Media Integration(社交媒体集成)
      • 三、Cocoa Touch Layer 相关联的概念
        • 1. Framework 的封装
        • 2. 动态库和符号
        • 3. Objective-C 运行时
      • 四、逆向开发中关注的 Cocoa Touch 层细节
      • 五、总结

一、Cocoa Touch Layer 简介

在这里插入图片描述
Cocoa Touch Layer 是 iOS 操作系统的顶层架构,专门为开发者提供构建应用程序的高层次框架。它主要负责用户交互界面(UI)、事件处理、多任务处理和系统服务的整合。作为 iOS 应用开发的核心,Cocoa Touch Layer 封装了许多便捷的工具和 API,使开发者能够快速创建直观、高性能的应用程序。

在逆向开发中,深入理解 Cocoa Touch Layer 的架构和工作原理,是分析应用功能、界面交互及事件流的基础。


二、Cocoa Touch Layer 的核心功能

1. UIKit
  • 功能
    • UIKit 是 iOS 开发的核心框架,提供了用于构建用户界面的一切工具,包括按钮、标签、表格视图等。
    • 它还支持屏幕旋转、手势识别、动画等交互功能。
  • 常用类
    • UIView:所有视图的基础类。
    • UIViewController:控制视图逻辑的核心类。
    • UITableViewUICollectionView:构建列表或网格视图。
    • UIButtonUILabel:基础控件。
  • 逆向开发中的用途
    • 分析 UI 元素的层次结构(使用工具如 Reveal 或 IDA)。
    • 修改界面布局和交互逻辑。

2. Event Handling(事件处理)
  • 功能
    • 管理触摸事件(如点击、滑动、长按等)。
    • 处理运动事件(设备旋转、重力感应)。
    • 支持远程控制事件(如耳机按钮事件)。
  • 关键机制
    • Responder Chain(响应链):事件沿着视图层次结构传递,直到被某个对象处理。
    • Gesture Recognizers:简化了触摸事件处理,例如 UIPinchGestureRecognizer(缩放手势)。
  • 逆向开发中的用途
    • 修改或拦截事件响应逻辑(通过 Hook 方法如 touchesBegan)。
    • 分析用户交互行为。

3. Multitasking(多任务处理)
  • 功能
    • 允许应用在后台执行任务(如音乐播放、下载)。
    • 管理后台通知与更新。
  • 关键机制
    • UIApplicationDelegate 提供了相关生命周期方法(如 applicationDidEnterBackground)。
    • 后台任务由 beginBackgroundTask 管理。
  • 逆向开发中的用途
    • 分析后台任务的运行逻辑。
    • Hook 生命周期方法,了解应用如何管理多任务。

4. Push Notifications(推送通知)
  • 功能
    • 允许服务器向用户发送通知,显示重要信息或事件。
    • 分为本地通知和远程推送通知(通过 Apple Push Notification Service)。
  • 关键机制
    • UNUserNotificationCenter:用于管理通知。
    • didReceiveRemoteNotification:处理远程通知的方法。
  • 逆向开发中的用途
    • Hook 推送处理逻辑,分析通知内容和交互行为。
    • 绕过通知权限弹窗或模拟通知数据。

5. Social Media Integration(社交媒体集成)
  • 功能
    • 提供与社交媒体(如 Facebook、Twitter)的直接交互。
    • 支持应用间数据共享和登录。
  • 逆向开发中的用途
    • 分析第三方 SDK 的集成逻辑(如 Facebook SDK)。
    • 修改社交媒体登录的行为。

三、Cocoa Touch Layer 相关联的概念

1. Framework 的封装

Cocoa Touch Layer 是一个封装了多层功能的高层次框架,结合了其他 iOS 层(如 Core Services 和 Core OS)的能力:

  • Core Services 提供底层功能(如 SQLite 数据库、网络通信)。
  • Core OS 负责底层硬件交互(如内存、线程管理)。
2. 动态库和符号
  • UIKit 和其他 Cocoa Touch 框架以动态库(.dylib.framework)的形式存在。
  • 在逆向分析中,通过查看符号表(Symbol Table)可以找到相关的类、方法和属性。
3. Objective-C 运行时
  • Cocoa Touch Layer 的大部分功能基于 Objective-C 实现,其动态运行时特性(如消息发送、类和方法动态绑定)是逆向分析的重点。

四、逆向开发中关注的 Cocoa Touch 层细节

  1. UI 层次结构分析

    • 工具:RevealFlex,用来查看应用的视图层次。
    • 常见目标:修改界面元素的属性或布局。
  2. Hook UIKit 方法

    • 通过工具(如 LogosFishhook)拦截和修改 UIKit 中的关键方法。
    • 示例:Hook viewDidLoad 来分析视图加载逻辑。
  3. 触摸事件拦截

    • Hook touchesBegantouchesMoved 等方法,分析和修改事件处理流程。
  4. 动态注入与调试

    • 使用工具如 CycriptFrida 动态调试 UIKit 代码。

五、总结

Cocoa Touch Layer 是 iOS 应用程序的核心开发层,涵盖了用户界面、事件处理、通知、多任务等关键功能。对于逆向开发来说,掌握 Cocoa Touch Layer 的原理和框架结构,可以帮助深入了解目标应用的行为和功能逻辑,同时为修改界面、分析事件流和 Hook 系统调用奠定基础。

相关文章:

iOS 逆向学习 - iOS Architecture Cocoa Touch Layer

iOS 逆向学习 - iOS Architecture Cocoa Touch Layer 一、Cocoa Touch Layer 简介二、Cocoa Touch Layer 的核心功能1. UIKit2. Event Handling(事件处理)3. Multitasking(多任务处理)4. Push Notifications(推送通知&…...

C语言实现库函数strlen

size_t是 unsigned int fgets会读入\n&#xff0c;用strcspn函数除去 assert判读指针是否为空指针&#xff0c;使用前要引头文件<assert.h> #include <stdio.h> #include <assert.h> size_t mystrlen(const char* str) {assert(str);size_t count 0;while …...

050_小驰私房菜_MTK Camera debug, data rate 、mipi_pixel_rate 确认

mipi_pixel_rate = data rate * 4 / 10 (4 是表示4lane,10表示raw数据是10bit) mipi_pixel_rate 信息,我们可以通过 sentest命令打印看到: 下面的信息我们可以看到,mipi_pixel_rate = 501.357739Mpps,mipi rate = 10000000,是对应的我们驱动文件里面配置写的mipi_pixel_r…...

(六)vForm 动态表单(数据量大,下拉选卡顿问题)

系列文章目录 (一)vForm 动态表单设计器之使用 (二)vForm 动态表单设计器之下拉、选择 (三)vForm 动态表单解决下拉框无数据显示id问题 (四)vForm 动态表单自定义组件、属性 (五)vForm 动态表单文件上传、下载 文章目录 目录 前言 一、组件改造 1.添加分页所需参…...

【mybatis-plus问题集锦系列】mybatis使用xml配置文件实现数据的基础增删改查

简单的数据查询&#xff0c;我们可以在mapper接口里面去实现&#xff0c;但是如果是复杂的查询&#xff0c;我们就可以使用xml配置文件去做&#xff0c; 官网链接xml配置文件 实现效果 实现代码 根据mapper接口的包结构&#xff0c;在resources包里面新建同名同结构的xml文件…...

投稿指南【NO.12_14】【极易投中】期刊投稿(毛纺科技)

近期有不少同学咨询投稿期刊的问题&#xff0c;大部分院校的研究生都有发学术论文的要求&#xff0c;少部分要求高的甚至需要SCI或者多篇核心期刊论文才可以毕业&#xff0c;但是核心期刊要求论文质量高且审稿周期长&#xff0c;所以本博客梳理一些计算机特别是人工智能相关的期…...

机器学习算法的分类

一、按学习方式分类 1.监督学习&#xff08;Supervised Learning&#xff09; &#xff08;1&#xff09;定义&#xff1a;使用已标记的数据进行训练&#xff0c;每个输入数据都有对应的输出标签。模型学习输入与输出之间的映射关系。 按以上可以分为以下两种&#xff1a; …...

Linux操作系统下,挂ILA

一、在linux下安装vivado2018.3 参考视频&#xff1a;Linux下vivado安装教程_哔哩哔哩_bilibili 复制安装包进入虚拟机 安装包链接&#xff1a;https://pan.quark.cn/s/ca1a15d446fa 我的vmware tools无法使用&#xff0c;不能直接拖进虚拟机&#xff0c;所以使用了U盘复制…...

HTML——26.像素单位

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素&#xff1a;1.指设备屏幕上的一个点&#xff0c;单位px&#xff0c;如led屏上的小灯朱2.当屏幕分辨率固定时&…...

【HTML】Day02

【HTML】Day02 1. 列表标签1.1 无序列表1.2 有序列表1.3 定义列表 2. 表格标签2.1 合并单元格 3. 表单标签3.1 input标签基本使用3.2 上传多个文件 4. 下拉菜单、文本域5. label标签6. 按钮button7. div与span、字符实体字符实体 1. 列表标签 作用&#xff1a;布局内容排列整齐…...

AI 自动化编程对编程教育的影响

AI 自动化编程的未来 引言 你是否曾想过&#xff0c;未来的程序员需要掌握哪些技能呢&#xff1f;随着人工智能的迅猛发展&#xff0c;特别是生成式AI工具的普及&#xff0c;编程的世界正在发生翻天覆地的变化。编程教育也在这种环境下进行着深刻的转型。那么&#xff0c;AI …...

Java100道面试题

1.JVM内存结构 VM内存结构指的是JVM运行时数据区结构&#xff0c;它主要包含以下几个部分&#xff1a; 堆&#xff08;Heap&#xff09;&#xff1a;线程共享。 JVM堆&#xff08;Heap&#xff09;是Java虚拟机中的一块内存区域&#xff08;所有线程共享&#xff09;&#x…...

解密人工智能:如何改变我们的工作与生活

引言&#xff1a;AI崛起背后的思考 在过去的几十年里&#xff0c;人工智能&#xff08;AI&#xff09;从科幻小说中的神秘存在&#xff0c;逐渐走进了我们的日常生活。无论是智能手机的语音助手&#xff0c;还是推荐心仪商品的电商平台&#xff0c;AI技术已悄然融入工作与生活的…...

Linux postgresql-15部署文档

一、PostgreSQL的安装 1、下载地址 postgresql安装包下载地址&#xff1a;https://www.postgresql.org/download/linux/redhat/ 2、安装脚本 复制下面的安装脚本即可&#xff1a; sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64…...

visual studio 安全模式

一、安全模式&#xff1a; 在 Visual Studio 中&#xff0c;安全模式是一种启动方式&#xff0c;允许你在禁用所有扩展和自定义设置的情况下启动 Visual Studio。这个模式可以帮助排除插件或扩展引起的问题&#xff0c;特别是在 Visual Studio 无法正常启动时。 二、安全模式下…...

Pandas-timestamp和datetime64的区别

文章目录 1. Timestamp&#xff08;时间戳&#xff09;2. Datetime64&#xff08;日期时间64位&#xff09;3. 主要区别&#xff1a; pandas.Timestamp 和 pandas.Datetime64 都是用于表示日期和时间的 Pandas 对象&#xff0c;但它们有一些关键的区别&#xff1a; 1. Timesta…...

@MapperScan

简介&#xff1a; MapperScan注解是MyBatis框架在Spring Boot中的一个重要集成注解 作用&#xff1a; MapperScan主要作用是告诉Spring框架在启动时扫描指定的包路径&#xff0c;并将该路径下的所有MyBatis的Mapper接口批量注入到Spring容器中。这样&#xff0c;开发者就可以…...

SQL中聚类后字段数据串联字符串方法研究

在 SQL 中&#xff0c;使用 聚类&#xff08;GROUP BY&#xff09; 后将某个字段的数据串联为一个字符串&#xff0c;常见的方法包括以下几种&#xff0c;取决于数据库管理系统&#xff08;DBMS&#xff09;的具体支持功能&#xff1a; 1. 使用 GROUP_CONCAT &#xff08;MySQL…...

【嵌入式硬件】直流电机驱动相关

项目场景&#xff1a; 驱动履带车&#xff08;双直流电机&#xff09;前进、后退、转弯 问题描述 电机驱动MOS管烧毁 电机驱动采用IR2104STRH1R403NL的H桥方案&#xff08;这是修改之后的图&#xff09; 原因分析&#xff1a; 1.主要原因是4路PWM没有限幅&#xff0c;修改…...

CSP初赛知识学习计划(第一天)

计算机知识全解析 一、计算机的发展历程 计算机的发展堪称一部波澜壮阔的科技史诗&#xff0c;其源头可追溯至古老的计算工具。早期&#xff0c;为了满足人类在天文、历法计算以及商业贸易中对数据处理的需求&#xff0c;算盘、算筹等手动计算器械应运而生&#xff0c;它们依…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...