このページでは

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

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

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

REAのセットアップ

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

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

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

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

npx rea-agents@latest setup

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

その他のインストール方法:curl →

初めて、または行方不明 Node.js またはコーディングエージェント? ステップバイステップセットアップガイドに従ってください→

仕組み

リバースエンジニアリングとは、プログラムそのものを調べてソフトウェアの仕組みを理解することです。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

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

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

プロンプトの例*電卓

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

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

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

10% of 200 = 20200 + 20 = 220
REA が提供する情報
ハンドラーの命令、逆コンパイルされたコード、および呼び出し。
エージェントが説明すること
どのブランチが適用され、何が計算され、どのように再構築するか。
インストールされている電卓DLLから選択されたアセンブリ。 考えと返信は、調査結果を示しています。 電卓の例に続きます↓

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

例01•Chromeの恐竜ゲーム

恐竜はなぜ速くなる?

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

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

質問の例 · 恐竜ゲーム

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

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

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

3. 作ったゲームで遊ぶ

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

6 → 10 → 13

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

スライダーを動かして独自の速度を設定します。 スペースまたはジャンプはサボテンをクリアします。
スピードラボを開く→
スクリプト、チェック、および分析を試す方法を参照してください

検査対象: wayouのChromium派生ブラウザ版.

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桁に四捨五入されていました。

新しいミニゲームは、その速度ルールを保持します。 その描画、ジャンプ、および衝突コードは、小さな教育の実装です。 ラボを開く 新しいコードを表示し、同じ速度チェックを実行するには。

ターゲットを自分で検査するには、次の手順に従います ブラウザ接続手順 を使用して 恐竜のページ. エージェントにページURLとローカルデバッグエンドポイントを指定し、上記のプロンプトをコピーします。

検査された速度コード · Chromium著者·BSDライセンス

例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の公開ソースからの名前を使用しています。

割合の実装 · マイクロソフトのテストケース · ネイティブセットアップガイド

REAケーススタディ.

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

ショーケース→

アンドロイド*APK分析

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

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

Androidのケーススタディを読む

Electron•機能トレース

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

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

Notionのケーススタディを読む

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

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

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

DX-Ballのケーススタディを読む

あなたの最初の調査

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

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

ガイド付きの例を試してください

調査対象を選ぶ。

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

マシンコードプログラム

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

機械コードの解析プログラムガイド

JavaScript&Electron

アプリケーションフォルダまたはASARアーカイブからモジュール、ルート、IPCおよびネイティブ依存関係をマップします。

アプリケーションワークフロー

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

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

ブラウザ観察ガイド
より大きなプロジェクトを試す
プロンプトの例·ウェブサイト

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

はい、これ。

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

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

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

質問がありますか?

トップ