コーディングエージェントとのリバースエンジニアリング
ソフトウェアの
仕組みを知ろう。
REA は、プログラムを調べて動作を説明するためのツールをコーディングエージェントに提供します。
すでに再を知っていますか? 分析ガイドへスキップ→
もっと深く行きたいですか? ブログを読む→
REAのセットアップ
このプロンプトをコーディングエージェントに貼り付けてください:
npx rea-agents@latest setup を使って REA をインストールし、このコーディングエージェントに接続してください。まず変更内容を提示し、私が承認してから実行してください。その後、インストールを確認してください。
ターミナルから実行することもできます:
npx rea-agents@latest setup
設定の変更内容を確認して承認したら、エージェントを再起動します。
初めて、または行方不明 Node.js またはコーディングエージェント? ステップバイステップセットアップガイドに従ってください→
リバースエンジニアリングとは?
プログラムそのものを調べて、ソフトウェアの仕組みを理解することです。
目標:機能を十分に理解する それを説明してください, それを変更します または それを再構築します。
例えば:なぜ電卓で 200 + 10% を計算すると 220 になる?
REA を使う前 · 自分で調べる
オリジナル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 を使うと · エージェントに聞く
プロンプトは一つだけ。
普段の言葉でエージェントに質問します。
REAを使用してWindows計算機を検査します。 なぜですか 200 + 10% 220を与えますか?
+の後に、%ボタンがかかります 最初の数の割合。
10% of 200 = 20200 + 20 = 220
- REA が提供する情報
- ハンドラーの命令、逆コンパイルされたコード、および呼び出し。
- エージェントが説明すること
- どのブランチが適用され、何が計算され、どのように再構築するか。
2つの例を試してみましょう。 ゲームの速度を変更し、電卓に戻り、その%ボタンを再構築します。
例01•Chromeの恐竜ゲーム
恐竜はなぜ速くなる?
- ゴール
- でゲームを再構築する 調節可能な速度。
- なぜそれをリバースエンジニアリング?
- その加速を再現するには、次のものが必要です 実行中のゲームのルール:どのくらいの速、それが増加し、それが停止したときに、それが開始されます。
再構築したゲームで遊ぶ
元のルール:6から開始し、13に向かって増加します。
REA が返した結果
ページ内で実際に実行されているスクリプト。 エージェントは更新機能と速度設定を読み取り、新しいゲームでそのルールを使用します。
この恐竜のゲームを検査するためにREAを使用してください。 なぜそれは速くなるのですか? 速度ルールを表示し、調整可能な速度で小さなバージョンを構築します。
検査対象: wayouのChromium派生ブラウザ版.
if (this.currentSpeed < this.config.MAX_SPEED) {
this.currentSpeed += this.config.ACCELERATION;
}
6時からスタート。 追加 0.001 速度は以下のとおりですが、衝突のない各更新 13.
スピードラボを開く→各部分が何をするか
- 01*REA 実行中のゲームのスクリプトを読む実際のコードと設定をエージェントに返します。
- 02*あなたの代理店ルールを再構築し、コントロールを追加しますスピードスライダーで小さなゲームで回収された加速を使用してください。
- 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とローカルデバッグエンドポイントを指定し、上記のプロンプトをコピーします。
例02•Windows計算機
電卓の % ボタンを再現する。
私たちはなぜ見ましたか 200 + 10% 220を与えます。 それでは、+と×の両方のルールを回復し、それらを試してみましょう。
- ゴール
- 処理する小さな電卓を構築する +と×の両方が正しく。
- なぜそれをリバースエンジニアリング?
- 同じボタンを使用します +と×の後の異なるルール。 インストールされているアプリを調べて、パーセンテージが適用されている数を見つけます。
計算を試してみてください
10%の200=20. 次に、200+20=220。
REA が返した結果
1つの枝は100で割ります。 もう1つは、最初の数で乗算します。 エージェントは両方を使用して%ボタンを再作成します。
この例では, previous = 200 と current = 10.
REAを使用して、Windows計算機の%ボタンを検査します。 +と×の後にルールを回復し、両方を使用する小さな電卓を作成します。
if (operation == multiply || operation == divide) {
percent = current / 100;
} else {
percent = current * previous / 100;
}
- と+
-
最初の数の10%を取ります。
10% of 200 = 20 → 200 + 20 = 220 - ×付き
-
10%を0.1に変えます。
200 × 0.1 = 20
インストールされているアプリから作業中の%ボタンへ
-
01*REA読み取り calc.exe電卓アプリを起動しますコードが開きます
ms-calculator:. 次に、エージェントはインストールされているアプリのライブラリを選択します。 -
02*REAはライブラリを読み込みます%ハンドラーのコードを返します関数は演算子をチェックし、定数を使用します
100. - 03*あなたのエージェントはそれを解釈しますルールの説明と再現ブランチをMicrosoftのソースと照合してから、上記の+と×を試してください。
実際のコードと答えがどのようにチェックされたかを参照してください
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
#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を試してみてください。
私たちのノートの例をダウンロードし、そのCSVエクスポートをトレースし、一つの変更された入力を確認してください。
もっと詳しく知りたい?
理解したいことや構築したいことをエージェントに伝えます。 REAを使うと、何でもからの一緒に働くことができます このウェブサイトを複製する に その実行可能ファイルからゲームを再構築します。
REAを使用して検査する https://reverseengineeranything.app/. 私のためにこのウェブサイトを複製します。
はい、これ。
実行可能ファイルからこのゲームを再構築するには、REAを使用します。 Cでゲームプレイロジックを回復し、オリジナルに対してテストします。
設定と分析の手順については、ターゲットを選択します:
質問がありますか?
よくある質問を読む, Discordで私たちとチャット 、または GitHubの問題を開く バグや機能要求のために。
コミュニティに参加
調査を共有し、Discord上の他のREAユーザーからの助けを得る。 プロジェクトの更新については、X上のREAに従ってください。