---
title: REA-コーディングエージェントのリバースエンジニアリング
url: https://rea.tools/ja/
---

コーディングエージェントとのリバースエンジニアリング

# ソフトウェアの 仕組みを知ろう。

アプリ、ゲーム、ウェブサイトについてコーディングエージェントに質問してみましょう。REA は、答えの根拠となるコードを調べるためのツールを提供します。

[はじめる](https://rea.tools/get-started/)
[例を見る ↓](https://rea.tools/ja/#dinosaur)

## REAのセットアップ

このプロンプトをコーディングエージェントに貼り付けてください：

あなたのコーディングエージェント

npx rea-agents@latest setup を使って REA をインストールし、このコーディングエージェントに接続してください。まず変更内容を提示し、私が承認してから実行してください。その後、インストールを確認してください。

ターミナルから実行することもできます：

`npx rea-agents@latest setup`

設定の変更内容を確認して承認したら、エージェントを再起動します。


セットアップオプション


その他のインストール方法：[curl →](https://rea.tools/get-started/#curl-installation)

初めて、または行方不明 Node.js またはコーディングエージェント？ [ステップバイステップセットアップガイドに従ってください→](https://rea.tools/get-started/)

[RL 環境を構築する →](https://rea.tools/ja/#rl-environments)

Web アプリを記録し、エージェントの学習とテストに使います。

[ショーケース→](https://rea.tools/ja/showcase/)

調査とインタラクティブなデモ。

[ブログ →](https://rea.tools/ja/blog/)

手法とソフトウェア再実装の記録。

## 仕組み

リバースエンジニアリングとは、プログラムそのものを調べてソフトウェアの仕組みを理解することです。REA を使えば、エージェントがコードをたどり、機能を説明し、その再実装を手伝えます。

1. ### 一つの機能について質問する

   エージェントにプログラムやページを渡し、質問します。
2. ### プログラムを調べる

   REA はエージェントがコードを読み、実行中のプログラムの動作を調べるのを支援します。
3. ### 理解してから変更を試す

   エージェントは調査結果をもとに機能を説明したり、再実装したりします。

電卓の調査全体を見る

電卓で 200 + 10% が 220 になるのはなぜでしょうか？

### 命令を一つずつたどる

オリジナルx64·選択された指示 

```
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
0x180124960: LEA RCX, [RSP + 0x160]
0x180124968: CALL 0x180122650
0x18012496e: LEA RDX, [R13 + 0x160]
0x180124975: LEA RCX, [RSP + 0x78]
0x18012497a: CALL 0x180109720
0x18012497f: MOV RSI, RAX
0x180124982: MOV qword ptr [RSP + 0x28], RAX
0x180124987: LEA RDX, [RSP + 0x160]
0x18012498f: MOV RCX, RAX
0x180124992: CALL 0x180123190
; … value-copy instructions omitted …
0x180124a14: MOV RDX, RDI
0x180124a17: LEA RCX, [RSP + 0xf8]
0x180124a1f: CALL 0x180109720
0x180124a24: LEA R8, [RSP + 0x30]
0x180124a29: MOV RDX, RAX
0x180124a2c: LEA RCX, [RSP + 0xb8]
0x180124a34: CALL 0x180123c10
```



01\*どの支店？

“**0x5b? 0x5c?** 同じ場所に2つのジャンプ。 これらはどの演算子ですか？”

コマンドIdを検索し、ブランチにラベルを付けます。

0x5b
:   ディバイド÷

0x5c
:   乗算×

02 · 呼び出された関数は何をする？

「100は明らかです。 呼び出しは単なるアドレスです。 **どちらが分かれていますか？ どの値が入りますか？**”

ヘルパー関数を検査し、格納されている値をトレースします。

0x64
:   100

…123190
:   ディバイド

03·ルールとは何ですか？

"このパスは、他の入力によって乗算されます。 だから **10%は200の10%を意味します** +の後。”

オペランドに名前を付け、両方の演算子パスを確認します。

200 × 10 / 100
**20**

![](https://rea.tools/assets/localized/ja/figures/analyst-thinking.svg)

図解専門家の推論

**命令をデコードし、関数呼び出しに従って計算を再構築します。**

エージェントに同じ質問をする

プロンプトの例\*電卓

REAを使用してWindows計算機を検査します。 なぜですか 200 + 10% 220を与えますか？

回答例\*調査結果に基づく

+の後に、%ボタンがかかります **最初の数の割合。**

`10% of 200 = 20`**200 + 20 = 220**

REA が提供する情報
:   ハンドラーの命令、逆コンパイルされたコード、および呼び出し。

エージェントが説明すること
:   どのブランチが適用され、何が計算され、どのように再構築するか。

インストールされている電卓DLLから選択されたアセンブリ。 考えと返信は、調査結果を示しています。 [電卓の例に続きます↓](https://rea.tools/ja/#calculator)

二つの例を試しましょう。ゲームの速度を変えてから、電卓の % ボタンを再実装します。

例01•Chromeの恐竜ゲーム

## 恐竜はなぜ速くなる？

走り続けるとゲームの速度が上がります。速度を調節できる形で再実装するには、まず速度が変わる仕組みを調べます。

### 1. 速度について質問する

質問の例 · 恐竜ゲーム

この恐竜のゲームを検査するためにREAを使用してください。 なぜそれは速くなるのですか？ 速度ルールを表示し、調整可能な速度で小さなバージョンを構築します。

### 2. 速度のルールを見つける

REA を使うと、エージェントが実行中のゲームのコードを読めます。速度は 6 から始まり、13 未満の間は更新ごとに少しずつ上がります。

### 3. 作ったゲームで遊ぶ

下のミニゲームにこのルールを再現し、速度スライダーを加えました。スタートを押して、自分の速度を選んでみましょう。

速度 6.0
 回復された加速ルールを使用する

元のルール：6から開始し、13に向かって増加します。

スライダーを動かして独自の速度を設定します。 スペースまたはジャンプはサボテンをクリアします。



遊ぶには JavaScript を有効にしてください。ルールを読んだり、下のソースコードを開いたりすることはできます。

[スピードラボを開く→](https://rea.tools/ja/examples/dino-lab/)

スクリプト、チェック、および分析を試す方法を参照してください

検査対象: [wayouのChromium派生ブラウザ版](https://wayou.github.io/t-rex-runner/).

REA·ロード index.js \*選択した行

```
if (this.currentSpeed < this.config.MAX_SPEED) {
  this.currentSpeed += this.config.ACCELERATION;
}
```

6時からスタート。 追加 0.001 速度は以下のとおりですが、衝突のない各更新 13.

各部分が何をするか

1. 01\*REA

   実行中のゲームのスクリプトを読む

   実際のコードと設定をエージェントに返します。
2. 02\*あなたの代理店

   ルールを再構築し、コントロールを追加します

   スピードスライダーで小さなゲームで回収された加速を使用してください。
3. 03\*あなた

   スピードとプレイを変更します

   元の加速を試してから、自分のペースを選択してください。

REAは、ローカルデバッグ接続を介してHTTP browser editionを検査し、ロードされたものを返しました `index.js`、そのソースとダイジェストを含みます。

検査されたスクリプトから選択された設定

```
ACCELERATION: 0.001,
MAX_SPEED: 13,
SPEED: 6
```

私たちは、障害物や自動スケジューリングを無効にして、制御されたブラウザチェックで元のゲームの更新機能を呼びました。 4,000回の更新後の速度は10.0、10,000回の更新後は13.0で、小数点以下1桁に四捨五入されていました。

新しいミニゲームは、その速度ルールを保持します。 その描画、ジャンプ、および衝突コードは、小さな教育の実装です。 [ラボを開く](https://rea.tools/ja/examples/dino-lab/) 新しいコードを表示し、同じ速度チェックを実行するには。

ターゲットを自分で検査するには、次の手順に従います [ブラウザ接続手順](https://rea.tools/ja/guides/browser/#prepare) を使用して [恐竜のページ](https://wayou.github.io/t-rex-runner/). エージェントにページURLとローカルデバッグエンドポイントを指定し、上記のプロンプトをコピーします。

[検査された速度コード](https://github.com/wayou/t-rex-runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571) ·  [Chromium著者·BSDライセンス](https://rea.tools/assets/licenses/dinosaur.txt)

例02•Windows計算機

## 電卓の % ボタンを再現する。

% ボタンは + の後と × の後で動作が異なります。二つのルールを調べ、小さな電卓で試しましょう。

### 1. % ボタンについて質問する

質問の例 · 電卓

REAを使用して、Windows計算機の%ボタンを検査します。 +と×の後にルールを回復し、両方を使用する小さな電卓を作成します。

### 2. 二つのルールを見つける

REA は、エージェントが % ボタンのコードを読むのを助けます。このコードは二つのルールを使います。

と+
:   最初の数の10％を取ります。`10% of 200 = 20 → 200 + 20 = 220`

×付き
:   10％を0.1に変えます。`200 × 0.1 = 20`

### 3. % ボタンを試す

下に二つのルールを再現しました。+ または × を選び、% を押してから = を押します。

200 +
**20**

10%の200=20. 次に、200+20=220。

検査されたパーセンテージルールのインタラクティブなイラスト。

実際のコードと答えがどのようにチェックされたかを参照してください

この例では, `previous = 200` と `current = 10`.

%ハンドラーの読み取り可能な要約

```
if (operation == multiply || operation == divide) {
  percent = current / 100;
} else {
  percent = current * previous / 100;
}
```

インストールされているアプリから作業中の％ボタンへ

1. 01\*REA読み取り calc.exe

   電卓アプリを起動します

   コードが開きます `ms-calculator:`. 次に、エージェントはインストールされているアプリのライブラリを選択します。
2. 02\*REAはライブラリを読み込みます

   %ハンドラーのコードを返します

   関数は演算子をチェックし、定数を使用します `100`.
3. 03\*あなたのエージェントはそれを解釈します

   ルールの説明と再現

   ブランチをMicrosoftのソースと照合してから、上記の+と×を試してください。

REA\*選択されたオリジナルの指示

```
0x180124945: MOV EAX, dword ptr [R13 + 0x18]
0x180124949: CMP EAX, 0x5c
0x18012494c: JZ 0x180124aba
0x180124952: CMP EAX, 0x5b
0x180124955: JZ 0x180124aba
0x18012495b: MOV EDX, 0x64
```

オペレーター Id·Microsoftのソース

```
#define IDC_MUL 92      // 0x5c
#define IDC_DIV 91      // 0x5b
#define IDC_PERCENT 118 // 0x76

0x64 = 100
```

REA4.1.0で検査：Windows電卓11.2508.4.0、x64。 読み取り可能な概要は、回復されたブランチを説明するために、Microsoftの公開ソースからの名前を使用しています。

[割合の実装](https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalcManager/CEngine/scifunc.cpp#L98-L111) · [マイクロソフトのテストケース](https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalculatorUnitTests/CalculatorManagerTest.cpp#L350-L370) · [ネイティブセットアップガイド](https://rea.tools/guides/native/)

## REAケーススタディ.

公開済みのアプリやゲームの機能を、コードと検証結果とともに紹介します。

[ショーケース→](https://rea.tools/ja/showcase/)

アンドロイド\*APK分析

### 認証者がログインコードを生成する方法

Aegis の公開 APK で 6 桁のログインコードを追い、デモの時計を動かして 30 秒ごとに変わる理由を確かめます。

[Androidのケーススタディを読む](https://rea.tools/showcase/aegis/)

Electron•機能トレース

### NotionがテキストとHTMLをどのようにコピーするか

Notion に同梱された JavaScript からシステムのクリップボードまでたどり、コピーがリッチなブロックデータを保持する仕組みを調べます。

[Notionのケーススタディを読む](https://rea.tools/ja/showcase/notion/)

ネイティブ-リコンストラクション

### DX-Ballの左/右の音の位置の計算

1996 年の Windows ゲームで、ボールの位置が左右の音に変わる仕組みを復元します。

[DX-Ballのケーススタディを読む](https://rea.tools/ja/showcase/dx-ball/)

## RL 環境を構築する

記録した Web アプリのセッションから、AI エージェントの学習とテストに使える実行可能な環境を構築します。

エージェントがブラウザーのリクエストとアプリのレスポンスを記録します。REA はそのデータからローカル環境を構築し、元のアプリを実行せずにエージェントがタスクを練習できるようにします。

フォルダーの削除に対応するには、削除前のフォルダーと、削除後に存在しないことを確認できるデータが記録に必要です。

[環境構築ガイド](https://rea.tools/guides/rl-environments/) · [X でデモを見る](https://x.com/reatools/status/2112574822584918075?s=20)

エージェントに REA を設定したら、次の URL とフォルダー操作を自分の環境に合わせて変更してください。

あなたのコーディングエージェント

REA を使い、次のテスト用 Web アプリから RL 環境を構築してください。 `http://127.0.0.1:3000` フォルダーの一覧表示、作成、名前変更、削除を対象にしてください。 テスト用フォルダーの作成と削除は許可します。既存のデータは変更しないでください。 `my-env` というフォルダーに保存し、使える操作を確認して実行方法を教えてください。

プロンプト例です。URL とフォルダー操作を自分の環境に合わせて変更してください。

あなたの最初の調査

## 小さなアプリでREAを試してみてください。

私たちのノートの例をダウンロードし、そのCSVエクスポートをトレースし、一つの変更された入力を確認してください。

[ガイド付きの例を試してください](https://rea.tools/ja/first-investigation/)

## 調査対象を選ぶ。

対象の種類ごとに、セットアップと最初の調査を案内します。

### マシンコードプログラム

実行可能ファイルおよびライブラリ内の関数、文字列、参照、および関数呼び出しの関係を検査します。

[機械コードの解析プログラムガイド](https://rea.tools/guides/native/)

### JavaScript&Electron

JavaScript デスクトップアプリ内部のコードをたどります。

[アプリケーションワークフロー](https://rea.tools/guides/javascript/)

### ブラウザとランタイムアクティビティ

選択したブラウザまたはプロセスアクティビティをキャプチャし、実行間で結果を比較します。

[ブラウザ観察ガイド](https://rea.tools/ja/guides/browser/)

より大きなプロジェクトを試す

プロンプトの例·ウェブサイト

REAを使用して検査する https://rea.tools/. 私のためにこのウェブサイトを複製します。

はい、これ。

例プロンプト·ゲームの再構築

実行可能ファイルからこのゲームを再構築するには、REAを使用します。 Cでゲームプレイロジックを回復し、オリジナルに対してテストします。

[DX-Ballのケーススタディを見る→](https://rea.tools/ja/showcase/dx-ball/)

## 質問がありますか？

セットアップの手順やよくある質問は[FAQ](https://rea.tools/ja/faq/)をご覧ください。

[Discord に参加](https://discord.gg/GkcryMnJDM)して、質問したり解析について話し合ったりできます。

不具合の報告や機能の要望は[GitHub Issues](https://github.com/morluto/rea/issues/new/choose)へお寄せください。
