Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
attesor — 基于AI逆向工程 Rosetta(2 for Linux)。免责声明:由于用户协议,我不会触碰代码。全部由AI完成,因此实现可能较为混乱。 | Kitploit
工具/GitHubGitHub/inokinoki/attesor
逆向工程硬件安全二进制分析学习与教育AI 辅助逆向固件分析
GitHubinokinoki/attesor

attesor

基于AI逆向工程 Rosetta(2 for Linux)。免责声明:由于用户协议,我不会触碰代码。全部由AI完成,因此实现可能较为混乱。

查看仓库
723201个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Rosetta 2 逆向工程项目

License: MIT Status

一项全面的逆向工程,旨在理解和记录苹果的 Rosetta 2 二进制翻译技术。

目录

  1. 背景
  2. 什么是 Rosetta?
  3. 什么是 Rosetta 2?
  4. 苹果如何在 macOS 中交付 Rosetta 2
  5. 技术架构
  6. 本项目
  7. 文件结构
  8. 使用方法
  9. 进度
  10. 参考资料

背景

架构转型

2020年11月,苹果发布了首批 Apple Silicon Mac,标志着从 Intel x86_64 处理器到自研 ARM M1 芯片的历史性转型。这是苹果的第三次重大架构转型:

  1. 1994: Motorola 68000 -> PowerPC
  2. 2006: PowerPC -> Intel x86_64
  3. 2020: Intel x86_64 -> Apple Silicon (ARM64)

每一次转型都需要一套二进制翻译方案,以便在迁移期间运行现有软件。Rosetta 2 是苹果迄今为止最先进的二进制翻译系统。


什么是 Rosetta?

Rosetta (2006-2011) 是苹果首个动态二进制翻译软件,使得 PowerPC 应用能够在基于 Intel 的 Mac 上运行。

主要特性:

  • 动态翻译: 在运行时将 PowerPC 代码翻译为 x86_64 代码
  • 操作系统集成: 内置于 Mac OS X 10.4 (Tiger) 到 10.6 (Snow Leopard)
  • 透明操作: 用户正常启动 PowerPC 应用
  • 性能开销: 通常比原生代码慢 20-50%

Rosetta 在 Mac OS X 10.7 (Lion) 中被移除,标志着 Intel 转型的完成。


什么是 Rosetta 2?

Rosetta 2 是苹果先进的动态二进制翻译技术,使得为 Intel x86_64 Mac 编译的应用能够在 Apple Silicon (ARM64) Mac 上运行。

架构概览```

┌─────────────────────────────────────────────────────────────┐ │ User Application (x86_64) │ ├─────────────────────────────────────────────────────────────┤ │ Rosetta 2 Layer │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ Translator │ │ Runtime │ │ System Call │ │ │ │ (AOT/JIT) │ │ Library │ │ Translation │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ macOS Kernel (ARM64) │ ├─────────────────────────────────────────────────────────────┤ │ Apple Silicon Hardware │ └─────────────────────────────────────────────────────────────┘

### 关键技术

1. **提前(AOT)翻译**
   - 在安装时将 x86_64 二进制文件翻译为 ARM64
   - 将翻译后的代码存入缓存,以加快后续启动速度
   - 相比纯 JIT 翻译,减少了运行时开销

2. **即时(JIT)翻译**
   - 在执行期间按需翻译代码块
   - 处理动态加载代码和自修改代码
   - 维护翻译缓存以提高效率

3. **指令集翻译**
   - x86_64 -> ARM64 指令映射
   - SSE/AVX -> NEON 向量指令翻译
   - x86_64 标志 -> ARM64 条件码

4. **系统调用翻译**
   - 将 x86_64 macOS 系统调用转换为等效的 ARM64 系统调用
   - 处理不同的调用约定
   - 管理系统调用边界上的寄存器状态

5. **运行时支持**
   - CPU 特性检测模拟
   - 线程本地存储处理
   - 信号与异常处理

---

## Apple 如何在 macOS 中提供 Rosetta 2

### 安装位置

Rosetta 2 位于:```
/Library/Apple/usr/libexec/oah/
├── rosetta        # Main translator binary
├── rosettad       # Rosetta daemon
└── librosetta.*   # Runtime libraries

oah 目录代表“旧架构硬件”——这是从 PowerPC 过渡时代的延续。

自动安装

在 Apple Silicon Mac 上,Rosetta 2 默认并未安装。它通过两种方式触发:

  1. 首次启动提示 ``` The "Rosetta" software is not installed on your Mac. Rosetta translates apps from Intel-based Macs for use on Apple Silicon Macs.
  2. 命令行安装 ```bash softwareupdate --install-rosetta --agree-to-license

提供的组件

组件描述
RosettaLinux/rosetta包含翻译引擎的核心ARM64二进制文件
RosettaLinux/rosettad管理翻译服务的系统守护进程
debugserver -> /usr/libexec/rosetta/debugserver为被翻译的进程提供调试支持
libRosettaRuntime翻译过程中链接的运行时库
translate_tool -> /usr/libexec/rosetta/translate_tool用于构建翻译后二进制文件的翻译工具

与macOS集成

  1. launchd集成:Rosetta守护进程作为系统服务运行
  2. 代码签名:翻译后的二进制文件自动完成代码签名
  3. Gatekeeper:通过Rosetta翻译的应用通过安全检查
  4. 系统完整性保护:防止被修改

技术架构

翻译过程```

┌──────────────────────────────────────────────────────────────────┐ │ Phase 1: Binary Loading │ │ ─────────────────────────────────────────────────────────────── │ │ 1. Load x86_64 Mach-O binary │ │ 2. Parse segments, sections, symbols │ │ 3. Validate code signatures │ │ 4. Map into translation context │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ Phase 2: AOT Translation │ │ ─────────────────────────────────────────────────────────────── │ │ 1. Disassemble x86_64 code sections │ │ 2. Translate instructions to ARM64 │ │ 3. Apply optimizations │ │ 4. Store in translation cache (~/.oah) │ └──────────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────────┐ │ Phase 3: Runtime Execution │ │ ─────────────────────────────────────────────────────────────── │ │ 1. Load translated ARM64 code │ │ 2. Set up x86_64 emulation context │ │ 3. Handle JIT translations for dynamic code │ │ 4. Translate syscalls on-the-fly │ └──────────────────────────────────────────────────────────────────┘

### 关键翻译挑战

1. **寄存器映射**
   - x86_64 有 16 个通用寄存器;ARM64 有 31 个通用寄存器
   - x86_64 标志寄存器 -> ARM64 NZCV 标志
   - RIP(指令指针)模拟

2. **内存排序**
   - x86_64:强内存排序(TSO)
   - ARM64:弱内存排序
   - 需要内存屏障以保证正确性

3. **向量指令**
   - SSE(128 位)-> NEON(128 位)直接映射
   - AVX(256 位)-> NEON 对模拟
   - SIMD 的异常处理不同

4. **调用约定**
   - x86_64:前 6 个参数在寄存器中(RDI, RSI, RDX, RCX, R8, R9)
   - ARM64:前 8 个参数在寄存器中(X0-X7)
   - 不同的栈帧布局

---

## 本项目

该仓库包含从 Rosetta 2 二进制文件中逆向工程实现的函数。通过细致的分析和反编译,我们已经识别并记录了数百个函数的语义用途。

### 目标

1. **教育性**:理解 Rosetta 2 内部工作原理
2. **文档化**:创建翻译技术的全面文档
3. **实现**:提供清晰、文档完善的 C 实现
4. **社区**:与逆向工程社区分享知识

### 我们的成就

- **828 个函数** 已在主要的 `rosetta` 二进制文件中识别并命名
- **612 个函数** 已用清晰的 C 代码完整实现
- **66 个类别** 的功能已记录
- 包含语义名称的完整函数名映射

### 函数类别

| 类别 | 函数数 | 描述 |
|----------|-----------|-------------|
| 入口点 | 1 | Rosetta 初始化 |
| 浮点/向量操作 | ~20 | 浮点和 SIMD 状态管理 |
| SIMD 内存操作 | ~10 | 使用 SIMD 的 memchr, memcmp, memcpy |
| 向量操作 | ~30 | NEON 向量算术、比较 |
| 二进制翻译 | ~50 | x86_64 -> ARM64 指令翻译 |
| 系统调用处理 | ~60 | 系统调用翻译与转发 |
| 内存管理 | ~20 | malloc, free, mmap 封装 |
| 哈希函数 | ~5 | 用于翻译缓存的地址哈希 |
| 字符串操作 | ~30 | SIMD 优化的字符串函数 |
| 密码学扩展 | ~30 | AES, SHA, CRC32 透传 |
| ELF 解析 | ~15 | Linux 二进制格式支持 |
| 翻译缓存 | ~20 | AOT/JIT 缓存管理 |

---

## 文件结构

### 核心文件```
Rosetta2/
├── README.md                      # This file
├── rosetta_decomp.c               # Original decompilation (74,677 lines)
├── rosettad_decomp.c              # Daemon decompilation (44,064 lines)
├── rosetta_refactored.c           # Minimal wrapper (59 lines) - includes modular headers
├── rosetta_refactored.c.legacy    # Legacy refactored code (19,302 lines) - archived
├── rosetta_refactored.h           # Main header (1,215 lines)
├── rosetta_refactored_complete.c  # Single-file implementation (2,686 lines)
├── rosetta_function_map.h         # Function name mapping (828 functions)
├── rosettad_refactored.c          # Daemon-side refactoring
└── SESSION_*.md                   # Session logs (30+ sessions)

模块化翻译基础设施 (56 C files + 65 H files)

下载工具