REAR(リバースエンジニアリング)で何でもかんでも解析しよう

2026/10/10 9:37

REAR(リバースエンジニアリング)で何でもかんでも解析しよう

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

改訂版サマリー:

REA は、新たなコーディングエージェントであり、オリジナルのソースコードにアクセスできない状態でプロプライエタリなバイナリやレガシーシステムをリバースエンジニアリングすることで、開発者がソフトウェアの機能を理解し再構築することを可能にします。デコンパイルやアセンブリ検査といったツールを用いることで、REA は不透明なプログラムを理解可能なコンポーネントへと変換します。例えば、Chrome の Dinosaur ゲームの隠された速度ルールを再構築して調整可能な速度スライダーを付与し、Windows カルキュレーターの論理を分析してパーセントボタンが値を計算する方法を明らかにしました。このシステムはネイティブバイナリ、JavaScript/Electron アプリ、およびブラウザランタイムアクティビティの検査をサポートします。チームはシンプルなターミナルコマンド

npx rea-agents@latest setup
を実行することで、すぐに REA を利用を開始できます。この機能はソフトウェア保守に大きな変化をもたらしており、チームが各種アプリケーションタイプにおいて特定の機能を説明し、変更または再構築することを可能にしています。

本文

コーディングエージェントと REA によるリバースエンジニアリング入門

ソフトウェアの仕組みを発見しましょう。REA (Reverse Engineering Agents) を使用することで、コーディングエージェントにプログラムを検査させ、それがどのように動作するかを説明するための強力なツールを提供できます。


1. REA のセットアップ

コーディングエージェントに REA を導入する手順です。

インストール手順

以下のコマンドをターミナルで実行してください:

npx rea-agents@latest setup

重要なポイント:

  • コマンドを実行するとセットアップ計画が表示されます。
  • 計画に同意し、インストールが完了した後、エージェントを再起動してください。

2. リバースエンジニアリングとは?

プログラム自体を検査し、ソフトウェアの動作原理を理解するプロセスです。

主な目標

ある機能を完全に理解できるようになることで、以下の対応が可能です:

  • 説明できる: 機能の仕組みを言語化できること。
  • 変更できる: コードを修正・拡張できること。
  • 再構築できる: 原則からゼロで実装できること。

具体例:Windows 電卓の「200 + 10%」が 220 になる理由

【REАを使用する前】手動調査

  • アセンブリ命令をデコードする必要があります。
  • コール追跡を手動で行う必要があります。
  • 計算プロセスを再構築する必要があります。

例:アセンブリ命令(一部)

; 電卓 DLL 内の処理ロジック
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c      ; 'C'キー (Multiply) と比較
0x18012494c: JZ 0x180124aba          ; 分岐先へジャンプ
...

【REA を使用する場合】エージェントへの質問

簡単なプロンプト一つで、詳細な説明を生成できます。

プロンプト: "REA を使用して Windows の電卓を検査してください。なぜ '200 + 10%' が '220' になるのか教えてください?"

エージェントの回答例:

+
ボタンを押した後、
%
ボタンは最初の数字のパーセント分を計算します。

  1. 200 の 10% は 20 です。
  2. 200 に 20 を加えることで 220 になります。

REA が提供した価値:

  • データ提供: REA はハンドラー命令、デコンパイルコード、コール関係を抽出します。
  • 説明生成: エージェントは、どの分岐(Branch)が適用されたのかを分かりやすく解説し、再構築方法を提示します。

3. ケーススタディ:2 つの実践例

ゲームの速度変更や電卓操作など、実際のコードを理解する 2 つの事例を紹介します。

事例 01: Chrome のダイノサウルスゲーム

目標: ダイノサウルスが徐々に速くなる理由を解析し、調整可能なバージョンを作成します。

なぜリバースエンジニアリングが必要か?

  • ゲーム内のルール(開始速度、加速量、最大速度)を知る必要があります。
  • 既存のコードから「なぜ加速するのか」というロジックを抽出する必要があります。

REA が返却した情報:

// ダイノサウルスの速度更新ロジック
if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}
  • 開始速度: 6
  • 加速: コリジョンが発生せず、最大速度に達するまで各フレーム
    0.001
    加算。
  • 最大速度: 13

役割分担:

  1. REA: HTTP ブラウザエディション (
    index.js
    ) のスクリプトと設定を抽出。
  2. エージェント: ルールを再構築し、スライダー付きの小型ゲームを作成。
  3. あなた: 新しい速度ルールで遊んだり、独自のアクセルレーションを試したり。

事例 02: Windows 電卓(パーセント処理)

目標:

+
と
×
の両方の演算子を正しく処理する小型電卓を構築します。

なぜリバースエンジニアリングが必要か?

  • 同じ「%」ボタンでも、直前の操作が
    +
    か
    ×
    かで計算ルールが異なります。
  • この文脈依存性をコードから復元する必要があります。

検証:

  • 200 + 10% = 220 (200 の 10% を足す)
  • 200 × 10% = 20 (10% に変換して掛ける)

REA が返却したロジック:

if (operation == multiply || operation == divide) {
  percent = current / 100;           // 乗算・除算後:現在の値を百分率に直す
} else {
  percent = current * previous / 100;// 加算後:前の値との積を百分率に直す
}

分析プロセス:

  1. REA:
    calc.exe
    を読み込み、コードとハンドラー(パーセント計算)を返却。
  2. エージェント: Microsoft のソースコードと分岐構造を確認し、ルールを実装。
  3. 検証: アセンブリレベルでも同様のロジックが確認できます。

アセンブリレベルでの定義例:

#define IDC_MUL 92      // 0x5c (乗算)
#define IDC_DIV 91      // 0x5b (除算)
#define IDC_PERCENT 118 // 0x76 (パーセント)

; パーセント値の基準となる定数
0x64 = 100

4. 次のステップと分析ガイド

REA の小型アプリへの試行は、より高度な解析へと繋がります。当社の Notes をダウンロードし、CSV エクスポートをトレースして変更箇所を確認することも可能です。

分析対象によるアプローチ方法

分析対象目的ガイドリンク
ネイティブバイナリ実行ファイル内の関数、文字列、コール関係を検査。ネイティブ分析ガイドへ
JavaScript / Electronアプリフォルダまたは ASAR アーカイブの構造(ルート、IPC など)をマップ化。アプリケーションワークフローへ
ブラウザ・ランタイムブラウザプロセス内のアクティビティをキャプチャし、結果を比較。ブラウザ観察ガイドへ

エージェントによるクローニングや再構築の提案

エージェントに「理解したいこと」や「構築したいこと」を伝えてください。以下のタスクも可能です:

DX-Ball のケーススタディを見る

同じ日のほかのニュース

一覧に戻る →

2026/10/11 7:50

独自の意思決定モデルを構築する

## Japanese Translation: 本研究の核心となる洞察は、言語モデルは単一パスの意思決定システムを模倣することは可能であるが、特定のカリブレーションが行われる限りでは、しばしば危険な過剰な自信を示すという点にある。標準的なモデルが複数のパスを通じて順次テキストを生成するのに対し、システムワンアプローチは制約付きデコーディング(例えば、選択肢 A〜E の語彙をマスキングする)を用いて、AI に固定されたオプションを 1 パスで選択させる。この手法は推論速度を向上させるが、信頼スコアの膨張というリスクをもたらす;具体的には、ネイティブ出力トークンの確率は次のトークンに対する自信を反映しており、正しい答えの真なる確率を反映していない。CommonsenseQA の保持サンプルでの評価では、ファインチューニングの後であっても未カリーブレーテッドなモデルは、明確な単一の答えが存在しない困難な Commonsense 問題に対して高い不確かさ(例:99.78%)を割り当てることができ、マクロ F1 精度は約 58%に留まり、高自信ビンに至っては単なる 70%に過ぎなかった。本研究では、LLM 模倣(Qwen/Qwen3-1.7B)における温度スケイリングを用いてこの問題を成功裏に解決し、モデルの報告された自信を実際の性能と数学的に整合させ、結果として適合温度が約 3.8 となった。したがって、制約付きデコーディングは標準化テストのような多選択タスクに対して効率的を提供するものの、その後のカリブレーションなしで展開することは、過剰な自信による誤りを招き、ユーザーを欺くことになる。今後、事前に定義された答えへの厳格な遵守が求められる適用においては、信頼性指標が真に信頼性を反映するように、事後処理ステップ(例えば温度スケイリング)の優先を確保する必要がある。

2026/10/07 21:30

2D 車両

## Japanese Translation: 「Motion Lab」は、1996 年に GFA BASIC で書かれた先駆的な物理エンジンが GTA の車体システムを動力源としていたのを記念し、同エンジンの 30 周年を祝うためのモダンな Web ベースの再現作品です。当時の一般的なシンプルな「ポインタ・フィジックス」と異なり、この JavaScript インプリメンテーションは、リアルなトルクおよび力の相互作用を含む高度な古典的な 2 次元剛体動力学を正確にシミュレートします。本プロジェクトは、教育的目的のためにレガシースタイルを維持しつつ、オリジナルのソフトウェアが後に摩擦に関する推測に基づいた近似的かつ技術的に不正確な車体シミュレーション層を追加したことを認める一方で、「リマスター」された、より美しいバージョンの元のワイヤフレーム美学を提供しています。ユーザーは「Car(カー)」「Spaceship(スペースシップ/通称:Ship)」「Brick(ブリック)」という 3 つの異なるモードを体験でき、これらのモードは歴史的に「Brick モデル」から始まり、「Ship 要素」を含むよう進化し、最終的に「Car 要素」を取り入れた経緯を持っています。体験には、重力やバリアーの有効/無効化に加え、キーボードまたはタッチ入力により制御される GTA スタイルのカメラズームが含まれています。重要なのは、この非公式なプロジェクトが Rockstar Games および Take-Two から独立しており、オフィシャル製品ではなくトリビュートであることです。2026 年の発表を予定している本再現作品は、ユーザーが外部プラグインに依存せず、数十年にわたる技術開発を直接体験することを呼びかけています。

2026/10/11 5:31

あなたは存在したくても、街自体がそれを好まない街建設ゲーム

## Japanese Translation: サンフランシスコ当局は、特定の住宅シミュレーターに関する自由裁量審査を正式に開始し、都市の規制環境におけるその影響を検討するための重要な手続き的段階を示しています。この措置は、政府機関が該ツールを積極的に調査していることを示しており、同時に具体的な欠陥や直ちに懸念すべき事項がまだ特定されていないことも指摘しています。当面の次の段階では、審査プロセスを継続してシミュレーターの法的地位および運用可能性を決定することとなり、これが将来的にサンフランシスコにおける同様の住宅シミュレーターの開発と規制方法に影響を与える可能性があります。