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が行うため、実装が乱雑になる可能性があります。

リポジトリを見る
723211ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Rosetta 2 リバースエンジニアリングプロジェクト

License: MIT Status

AppleのRosetta 2バイナリ変換技術を理解し文書化するための包括的なリバースエンジニアリングプロジェクト。

目次

  1. 背景
  2. Rosettaとは?
  3. Rosetta 2とは?
  4. AppleがmacOSでRosetta 2を提供する方法
  5. 技術アーキテクチャ
  6. このプロジェクトについて
  7. ファイル構造
  8. 使用方法
  9. 進捗状況
  10. 参考文献

背景

アーキテクチャの移行

2020年11月、Appleは初のApple Silicon Macを発表し、Intel x86_64プロセッサから自社開発のARMベースM1チップへの歴史的な移行を開始しました。これはAppleにとって3度目の主要なアーキテクチャ移行でした:

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

それぞれの移行では、移行期間中に既存のソフトウェアを実行するためのバイナリ変換ソリューションが必要でした。Rosetta 2は、Appleがこれまでに開発した中で最も高度なバイナリ変換システムです。


Rosettaとは?

Rosetta (2006-2011) は、PowerPCアプリケーションをIntelベースのMacで動作させるApple初の動的バイナリ変換ソフトウェアでした。

主な特徴:

  • 動的変換: PowerPCコードを実行時にx86_64に変換
  • OS統合: 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で動作させるAppleの先進的な動的バイナリ変換技術です。

Architecture Overview```

┌─────────────────────────────────────────────────────────────┐ │ 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がRosetta 2をmacOSに提供する方法

### インストール場所

Rosetta 2は次の場所にあります:```
/Library/Apple/usr/libexec/oah/
├── rosetta        # Main translator binary
├── rosettad       # Rosetta daemon
└── librosetta.*   # Runtime libraries

oahディレクトリは「Old Architecture Hardware」の略称で、PowerPC移行期からの継続です。

自動インストール

Apple Silicon搭載のMacでは、Rosetta 2はデフォルトではインストールされません。以下の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個のGPR、ARM64には31個のGPR
   - 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. **コミュニティ**: リバースエンジニアリングコミュニティと知識を共有する

### 達成したこと

- メインの`rosetta`バイナリで**828個の関数**を識別し命名
- **612個の関数**をクリーンなCコードで完全実装
- **66のカテゴリ**の機能を文書化
- 意味的な名前との完全な関数名マッピング

### 関数のカテゴリ

| カテゴリ | 関数数 | 説明 |
|----------|--------|------|
| Entry Point | 1 | Rosettaの初期化 |
| FP/Vector Operations | ~20 | 浮動小数点およびSIMD状態管理 |
| SIMD Memory Operations | ~10 | SIMDを使用したmemchr、memcmp、memcpy |
| Vector Operations | ~30 | NEONベクトル演算、比較 |
| Binary Translation | ~50 | x86_64 -> ARM64命令変換 |
| Syscall Handlers | ~60 | システムコール変換と転送 |
| Memory Management | ~20 | malloc、free、mmapラッパー |
| Hash Functions | ~5 | 変換キャッシュ用アドレスハッシュ |
| String Operations | ~30 | SIMD最適化された文字列関数 |
| Cryptographic Extensions | ~30 | AES、SHA、CRC32パススルー |
| ELF Parsing | ~15 | Linuxバイナリ形式サポート |
| Translation Cache | ~20 | AOT/JITキャッシュ管理 |

---

## ファイル構造
ツールをダウンロード