Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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完成,因此实现可能较为混乱。

查看仓库
723622天前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 │ └─────────────────────────────────────────────────────────────┘

root@kitploit:~
### 关键技术

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.
    root@kitploit:~
  2. 命令行安装 ```bash softwareupdate --install-rosetta --agree-to-license
    root@kitploit:~

提供的组件

与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 │ └──────────────────────────────────────────────────────────────────┘

root@kitploit:~
### 关键翻译挑战

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)

翻译基础设施完全模块化为分类组件:``` ├── rosetta_types.h # Base type definitions ├── rosetta_x86_decode.h/.c # x86 decoder ├── rosetta_arm64_emit.h/.c # ARM64 emitter ├── rosetta_translate_alu.h/.c # ALU translations ├── rosetta_translate_memory.h/.c # Memory translations ├── rosetta_translate_branch.h/.c # Branch translations ├── rosetta_translate_bit.h/.c # Bit manipulation ├── rosetta_translate_string.h/.c # String operations ├── rosetta_translate_special.h/.c # Special instructions ├── rosetta_translate_block.h/.c # Block translation coordinator ├── rosetta_translate_dispatch.h/.c # Instruction dispatch ├── rosetta_trans_dispatch.h/.c # Main dispatch layer ├── rosetta_trans_alu.h/.c # ALU emulation layer ├── rosetta_trans_mem.h/.c # Memory emulation layer ├── rosetta_trans_branch.h/.c # Branch emulation layer ├── rosetta_trans_bit.h/.c # Bit emulation layer ├── rosetta_trans_string.h/.c # String emulation layer ├── rosetta_trans_special.h/.c # Special instruction emulation ├── rosetta_trans_system.h/.c # System instruction emulation ├── rosetta_trans_neon.h/.c # NEON emulation layer └── Makefile.modular # Modular build system

root@kitploit:~
### 功能模块

核心基础设施和支持模块:```
├── rosetta_jit.h/.c               # JIT compilation infrastructure
├── rosetta_exec.h/.c              # Execution engine (NEW)
├── rosetta_init.h/.c              # Initialization & FP registers (NEW)
├── rosetta_codegen.h/.c           # Code generation primitives
├── rosetta_cache.h/.c             # Translation cache (AOT/JIT)
├── rosetta_transcache.h/.c        # Translation cache management
├── rosetta_context.h/.c           # CPU context management
├── rosetta_runtime.h/.c           # Runtime support
├── rosetta_hash.h/.c              # Address hashing
├── rosetta_memmgmt.h/.c           # Memory management
├── rosetta_memory_utils.h/.c      # Memory utilities
├── rosetta_utils.h/.c             # Utility functions
├── rosetta_string_utils.h/.c      # String utilities
├── rosetta_trans_helpers.h/.c     # Translation helpers
├── rosetta_refactored_helpers.h/.c # Refactoring helpers
└── rosetta_refactored_types.h     # Refactored type definitions

SIMD/Vector 模块

SIMD 和 vector 操作模块:``` ├── rosetta_simd.h/.c # SIMD operations ├── rosetta_simd_mem.h/.c # SIMD memory operations ├── rosetta_simd_mem_helpers.h/.c # SIMD memory helpers ├── rosetta_vector.h/.c # Vector operations ├── rosetta_refactored_vector.h/.c # Refactored vector ops ├── rosetta_jit_emit.h/.c # JIT emission ├── rosetta_jit_emit_simd.h/.c # SIMD JIT emission ├── rosetta_fp_translate.h/.c # FP translation ├── rosetta_fp_helpers.h/.c # FP helpers ├── rosetta_trans_neon.c # NEON translation └── rosetta_string_simd.c # SIMD string operations

root@kitploit:~
### 系统调用模块

客户机系统调用处理与翻译:```
├── rosetta_syscalls.h/.c          # Syscall translation core
├── rosetta_syscalls_impl.h/.c     # Syscall implementations
└── rosetta_crypto.h/.c            # Crypto instructions (AES, SHA, CRC32)

附加模块

额外的翻译和支持模块:``` ├── rosetta_translate.h/.c # Translation core ├── rosetta_translate_alu_impl.h/.c # ALU implementation details ├── rosetta_translate_memory_impl.h/.c # Memory implementation details ├── rosetta_translate_branch_impl.h/.c # Branch implementation details ├── rosetta_translate_special_impl.h/.c # Special implementation details └── rosetta_arm64_insns.h # ARM64 instruction definitions

root@kitploit:~
### 测试文件```
├── test_jit.c                     # JIT unit tests (737 lines)
└── test_translate.c               # Translation tests (1,059 lines)

总计:50+ 源文件,约 150,000+ 行代码


构建系统

先决条件

  • 支持 C11 的 GCC 或 Clang
  • macOS 或 Linux(兼容 POSIX 的系统)

构建库```bash

Build static library using modular Makefile

make -f Makefile.modular all

This creates librosetta.a static library

root@kitploit:~
### 构建各个组件```bash
# Compile core modules
gcc -c -I. -std=c11 rosetta_types.h
gcc -c -I. -std=c11 rosetta_codegen.c
gcc -c -I. -std=c11 rosetta_jit.c
gcc -c -I. -std=c11 rosetta_x86_decode.c
gcc -c -I. -std=c11 rosetta_arm64_emit.c

# Compile translation modules
gcc -c -I. -std=c11 rosetta_translate_alu.c
gcc -c -I. -std=c11 rosetta_translate_memory.c
gcc -c -I. -std=c11 rosetta_translate_branch.c
gcc -c -I. -std=c11 rosetta_translate_block.c
gcc -c -I. -std=c11 rosetta_translate_dispatch.c

# Compile support modules
gcc -c -I. -std=c11 rosetta_cache.c
gcc -c -I. -std=c11 rosetta_context.c
gcc -c -I. -std=c11 rosetta_syscalls.c
gcc -c -I. -std=c11 rosetta_runtime.c

运行测试```bash

Build and run JIT tests

make -f Makefile.modular test_jit

Build and run translation tests

make -f Makefile.modular test_translate

root@kitploit:~
### 作为库使用```bash
# Link against the static library
gcc -o my_app my_app.c -L. -lrosetta

# Or compile with source files directly
gcc -I. -o my_app my_app.c rosetta_*.c

反编译源文件分析

原始反编译文件 rosetta_decomp.c 中包含的字符串字面量揭示了原始源代码的结构。这些文件名出现在整个二进制的断言/错误消息中。

注意: 重构后的代码采用了与原始代码不同的、更加模块化的结构。

头文件 (.h)

  • Register.h
  • TaggedPointer.h
  • RedBlackTree.h
  • TransactionalList.h
  • Translator.h
  • AssemblerBuffer.h
  • BuilderBase.h
  • IrBuilder_x86.h

C++ 源文件 (.cpp)

  • Repatch.cpp
  • Decoder.cpp
  • Fixup.cpp
  • AssemblerHelpers.cpp
  • Operand.cpp
  • Opcode.cpp
  • BasicBlock.cpp
  • ThreadContextFcntl.cpp
  • InitStack.cpp
  • Thread.cpp
  • ThreadContext.cpp
  • ThreadContextRuntimeSignals.cpp
  • ThreadContextVm.cpp
  • VMAllocationTracker.cpp

C++ 头文件 (.hpp)

  • AssemblerBase.hpp
  • TranslatorBase.hpp

进展

当前状态

模块化架构(已完成)

翻译基础设施已完全模块化为以下组件:

总计:40+ 个模块化组件

翻译覆盖率

近期会话


参考资料

官方 Apple 文档

  • 将 macOS 应用移植到 Apple Silicon
  • 处理架构差异

技术资源

  • ARM64 System V ABI
  • Intel 64 and IA-32 Architectures SDM
  • ARM Architecture Reference Manual

相关项目

  • FEX-Emu - Linux x86_64 在 ARM64 上的模拟器
  • QEMU - 通用机器模拟器
  • Rosetta Linux - 社区研究项目

免责声明

本项目仅用于教育和研究目的。

  • Rosetta 2 是 Apple 的专有软件
  • 本项目不分发 Apple 的二进制文件
  • 本仓库中的所有代码由 Claude Code 与 Qwen 3.5 编写
  • 请勿使用本项目绕过 Apple 的安全措施

许可证

MIT 许可证 - 详见 LICENSE 文件。


贡献

欢迎贡献!感兴趣的领域:

  1. 实现剩余的函数
  2. 改进文档
  3. 添加测试用例
  4. 性能分析
  5. 架构图

最后更新:2026 年 2 月

下载工具
组件描述
RosettaLinux/rosetta包含翻译引擎的核心ARM64二进制文件
RosettaLinux/rosettad管理翻译服务的系统守护进程
debugserver -> /usr/libexec/rosetta/debugserver为被翻译的进程提供调试支持
libRosettaRuntime翻译过程中链接的运行时库
translate_tool -> /usr/libexec/rosetta/translate_tool用于构建翻译后二进制文件的翻译工具
  • Vdso.cpp
  • ProcMapsParser.cpp
  • ThreadContextSignals.cpp
  • ThreadContextSyscalls.cpp
  • TranslationCacheAot.cpp
  • TranslationCacheJit.cpp
  • TranslationCache.cpp
  • Translator.cpp
  • RuntimeLibraryBridgeInternal.cpp
  • TwoLevelOffsetMap.cpp
  • DeltaCodedOffsetMap.cpp
  • 指标数值
    函数总数828
    已映射函数828(100%)
    已实现函数600+
    完成度~75%
    已文档化分类66
    源文件56 个 C + 65 个 H
    总代码行数~150,000+
    模块类别文件描述
    核心类型rosetta_types.h基础类型定义
    执行引擎rosetta_exec.h/.cexecute_translated、上下文切换
    初始化rosetta_init.h/.cinit_translation_env、FP 寄存器
    x86 解码rosetta_x86_decode.h/.cx86_64 指令解码器
    ARM64 发射rosetta_arm64_emit.h/.cARM64 代码发射
    代码生成rosetta_codegen.h/.c代码生成原语
    JIT 核心rosetta_jit.h/.cJIT 编译基础设施
    翻译缓存rosetta_cache.h/.c, rosetta_transcache.h/.c块缓存(AOT/JIT)
    块翻译rosetta_translate_block.h/.c基本块翻译
    指令分发rosetta_trans_dispatch.h/.c指令分发
    ALU 翻译rosetta_translate_alu.h/.c, rosetta_trans_alu.h/.c算术/逻辑运算
    内存翻译rosetta_translate_memory.h/.c, rosetta_trans_mem.h/.c加载/存储操作
    分支翻译rosetta_translate_branch.h/.c, rosetta_trans_branch.h/.c控制流
    位操作翻译rosetta_translate_bit.h/.c, rosetta_trans_bit.h/.c位操作
    字符串翻译rosetta_translate_string.h/.c, rosetta_trans_string.h/.c字符串操作
    特殊翻译rosetta_translate_special.h/.c, rosetta_trans_special.h/.c特殊指令
    系统翻译rosetta_trans_system.h/.c系统寄存器
    NEON 翻译rosetta_trans_neon.cSIMD/NEON 操作
    SIMD 运算rosetta_simd.h/.c, rosetta_simd_mem.h/.cSIMD 操作
    向量运算rosetta_vector.h/.c向量操作
    FP 翻译rosetta_fp_translate.h/.c, rosetta_fp_helpers.h/.c浮点运算
    JIT 发射rosetta_jit_emit.h/.c, rosetta_jit_emit_simd.h/.cJIT 发射
    系统调用rosetta_syscalls.h/.c, rosetta_syscalls_impl.h/.c系统调用处理
    加密rosetta_crypto.h/.cAES、SHA、CRC32
    上下文rosetta_context.h/.cCPU 上下文保存/恢复
    运行时rosetta_runtime.h/.c运行时入口点
    内存管理rosetta_memmgmt.h/.c内存管理
    实用工具rosetta_utils.h/.c, rosetta_string_utils.h/.c实用函数
    类别指令
    ALUADD、SUB、AND、OR、XOR、MUL、DIV、INC、DEC、NEG、NOT、SHL、SHR、SAR、ROL、ROR
    内存MOV、MOVZX、MOVSX、MOVSXD、LEA、PUSH、POP、CMP、TEST
    分支Jcc、JMP、CALL、RET、CMOVcc、SETcc、XCHG
    位操作BSF、BSR、POPCNT、BT、BTS、BTR、BTC
    字符串MOVS、STOS、LODS、CMPS、SCAS
    特殊CPUID、RDTSC、SHLD、SHRD、CWD、CDQ、CQO、CLI、STI、NOP
    SIMDSSE、SSE2、SSE3、SSSE3、SSE4.x
    FPx87、SSE 标量 FP
    加密AES-NI、SHA、CRC32
    会话聚焦创建/修改的文件
    61+完全模块化35+ 个模块化组件
    61翻译模块化6 个翻译模块 + x86_decode 增强
    60翻译基础设施translate_block() 核心实现
    59系统调用实现额外系统调用处理程序
    58系统调用翻译I/O 向量和网络处理程序
    57内存管理VM 分配追踪器增强
    56SIMD 操作高级 SIMD 翻译
    55FP/SIMD浮点指令翻译
    54加密扩展AES-NI 直通实现
    53加密扩展SHA 和 CRC32 指令
    52字符串操作SIMD 优化字符串函数
    51向量操作NEON 向量算术
    50向量转换浮点转换
    49翻译缓存AOT/JIT 缓存管理
    48JIT 核心JIT 编译基础设施
    46-47代码生成x86_64 代码生成辅助
    45解码辅助ARM64 解码工具