{
    "archive_path": "archive/1791626739.861561",
    "base_url": "rea.tools",
    "basename": "",
    "bookmarked_date": "2026-10-10 10:05",
    "canonical": {
        "archive_org_path": "https://web.archive.org/web/rea.tools",
        "dom_path": "output.html",
        "favicon_path": "favicon.ico",
        "git_path": "git/",
        "google_favicon_path": "https://www.google.com/s2/favicons?domain=rea.tools",
        "headers_path": "headers.json",
        "htmltotext_path": "htmltotext.txt",
        "index_path": "index.html",
        "media_path": "media/",
        "mercury_path": "mercury/content.html",
        "pdf_path": "output.pdf",
        "readability_path": "readability/content.html",
        "screenshot_path": "screenshot.png",
        "singlefile_path": "singlefile.html",
        "warc_path": "warc/",
        "wget_path": "rea.tools/index.html"
    },
    "domain": "rea.tools",
    "extension": "",
    "hash": "1VX2MX7CKBFEHEMZ7R4R",
    "history": {
        "archive_org": [],
        "dom": [],
        "favicon": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--output",
                    "favicon.ico",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://www.google.com/s2/favicons?domain=rea.tools"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-10-10T10:08:41.969494+00:00",
                "index_texts": null,
                "output": "favicon.ico",
                "pwd": "/data/archive/1791626739.861561",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-10T10:08:41.365610+00:00",
                "status": "succeeded"
            }
        ],
        "git": [],
        "headers": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--head",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://rea.tools/"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-10-10T10:08:42.396710+00:00",
                "index_texts": null,
                "output": "headers.json",
                "pwd": "/data/archive/1791626739.861561",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-10T10:08:41.978103+00:00",
                "status": "succeeded"
            }
        ],
        "htmltotext": [],
        "media": [],
        "mercury": [
            {
                "cmd": [
                    "/app/node_modules/@postlight/parser/cli.js",
                    "https://rea.tools/"
                ],
                "cmd_version": "1.0.0",
                "end_ts": "2026-10-10T10:08:48.548295+00:00",
                "index_texts": null,
                "output": "mercury",
                "pwd": "/data/archive/1791626739.861561",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-10T10:08:45.231783+00:00",
                "status": "succeeded"
            }
        ],
        "pdf": [],
        "readability": [
            {
                "cmd": [
                    "/app/node_modules/readability-extractor/readability-extractor",
                    "/tmp/tmp4m121s4p",
                    "https://rea.tools/"
                ],
                "cmd_version": "0.0.11",
                "end_ts": "2026-10-10T10:08:45.222997+00:00",
                "index_texts": [
                    "Reverse engineering, with your coding agent\n            Find out howsoftware works.\n            \n              REA gives your agent the tools to inspect a program and explain\n              what it does.\n            \n            \n            \n              Already know RE?\n              Skip to analysis guides \u2192\n            \n            \n              Want to go deeper?\n              Read the Blog \u2192\n            \n          \n          \n            Set up REA\n            Copy this into your coding agent:\n            \n              \n              \n                Install REA and connect it to this coding agent using npx\n                  rea-agents@latest setup. Show me the setup plan for approval,\n                  then verify the installation.\n              \n            \n            Or run this in your terminal:\n            npx rea-agents@latest setup\n              \n            \n            \n              Approve the setup plan, then restart your agent.\n            \n          \n        \n\n      \n          \n            What is reverse engineering?\n            \n              Finding out how software works by\n              examining the program itself.\n            \n          \n          \n            The goal: understand a feature well enough to\n            explain it,\n            change it or\n            rebuild it.\n          \n          \n            One question:\n            why does Calculator give 220 for 200 + 10%?\n          \n          \n            \n              \n                Before REA \u00b7 You investigate it\n                yourself\n              \n              \n              \n                \n                  \n                  0x180124945: MOV EAX, dword ptr [R13 + 0x18]\n0x180124949: CMP EAX, 0x5c\n0x18012494c: JZ 0x180124aba\n0x180124952: CMP EAX, 0x5b\n0x180124955: JZ 0x180124aba\n0x18012495b: MOV EDX, 0x64\n0x180124960: LEA RCX, [RSP + 0x160]\n0x180124968: CALL 0x180122650\n0x18012496e: LEA RDX, [R13 + 0x160]\n0x180124975: LEA RCX, [RSP + 0x78]\n0x18012497a: CALL 0x180109720\n0x18012497f: MOV RSI, RAX\n0x180124982: MOV qword ptr [RSP + 0x28], RAX\n0x180124987: LEA RDX, [RSP + 0x160]\n0x18012498f: MOV RCX, RAX\n0x180124992: CALL 0x180123190\n; \u2026 value-copy instructions omitted \u2026\n0x180124a14: MOV RDX, RDI\n0x180124a17: LEA RCX, [RSP + 0xf8]\n0x180124a1f: CALL 0x180109720\n0x180124a24: LEA R8, [RSP + 0x30]\n0x180124a29: MOV RDX, RAX\n0x180124a2c: LEA RCX, [RSP + 0xb8]\n0x180124a34: CALL 0x180123c10\n                \n                \n              \n              \n                You decode the instructions, follow the calls and reconstruct\n                  the calculation.\n              \n            \n            \n              \n                With REA \u00b7 You ask\n                your agent\n              \n              One prompt.\n              \n                Ask your agent in plain English.\n              \n              \n                \n                \n                  Use REA to inspect Windows Calculator. Why does 200 + 10%\n                    give 220?\n                \n                \n                  \n                    Example answer \u00b7 based on the findings\n                  \n                  \n                    After +, the % button takes\n                    a percentage of the first number.\n                  \n                  10% of 200 = 20200 + 20 = 220\n                  \n                \n              \n              \n                \n                  REA supplies\n                  \n                    The handler\u2019s instructions, decompiled code and calls.\n                  \n                \n                \n                  Your agent explains\n                  \n                    Which branch applies, what it calculates and how to rebuild\n                    it.\n                  \n                \n              \n            \n            \n              Selected assembly from the installed Calculator DLL. The thoughts\n              and reply illustrate the findings.\n              Continue with the Calculator example \u2193\n            \n          \n        \n\n      \n          \n            Let's try two examples.\n            Change a game's speed, then return to Calculator and rebuild its %\n            button.\n          \n          \n            Example 01 \u00b7 Chrome\u2019s dinosaur game\n            Why does the dinosaur get faster?\n          \n          \n            \n              Goal\n              \n                Rebuild the game with\n                adjustable speed.\n              \n            \n            \n              Why reverse engineer it?\n              \n                To reproduce its acceleration, we need\n                the rule in the running game: how fast it\n                starts, how much it increases and when it stops.\n              \n            \n          \n          \n            \n              Play the reconstruction\n              \n                \n                  \n                  \n                    6 \u2192 10 \u2192 13\n                  \n                \n                \n              \n              \n              \n                Original rule: start at 6, then increase toward 13.\n              \n              \n                Move the slider to set your own speed. Space or Jump clears a\n                cactus.\n              \n              \n            \n            \n              \n                REA returned\n                \n                  The script actually running in the page. The\n                  agent reads its update function and speed settings, then uses\n                  that rule in a new game.\n                \n              \n              \n                \n                \n                  Use REA to inspect this dinosaur game. Why does it get\n                    faster? Show the speed rule, then build a small version with\n                    an adjustable speed.\n                \n              \n              \n                Inspected target:\n                wayou\u2019s Chromium-derived browser edition.\n              \n              \n                \n                if (this.currentSpeed < this.config.MAX_SPEED) {\n  this.currentSpeed += this.config.ACCELERATION;\n}\n              \n              \n                Start at 6. Add 0.001 each\n                update without a collision, while speed is below\n                13.\n              \n              Open the speed lab \u2192\n            \n          \n          \n            What each part does\n            \n              \n                01 \u00b7 REARead the running game\u2019s scriptReturn its actual code and settings to the agent.\n              \n              \n                02 \u00b7 Your agentRebuild the rule, add a controlUse the recovered acceleration in a small game with a speed\n                  slider.\n              \n              \n                03 \u00b7 YouChange the speed and playTry the original acceleration, then choose your own\n                  pace.\n              \n            \n          \n          \n            \n              See the script, checks and how to try the analysis\n            \n            \n              REA inspected the HTTP browser edition through a local debugging\n              connection and returned the loaded index.js,\n              including its source and digest.\n            \n            \n              \n              ACCELERATION: 0.001,\nMAX_SPEED: 13,\nSPEED: 6\n            \n            \n              We called the original game\u2019s update function in a controlled\n              browser check, with obstacles and automatic scheduling disabled.\n              After 4,000 updates, speed was 10.0; after 10,000, it was 13.0,\n              rounded to one decimal.\n            \n            \n              The new mini-game keeps that speed rule. Its drawing, jumping and\n              collision code are a small teaching implementation.\n              Open the lab to see the new code\n              and run the same speed check.\n            \n            \n              To inspect the target yourself, follow the\n              browser connection steps\n              using\n              the dinosaur page. Give your agent that page URL and your local debugging\n              endpoint, then copy the prompt above.\n            \n            \n              Inspected speed code\n              \u00b7\n              Chromium Authors \u00b7 BSD license\n            \n          \n        \n\n      \n          \n            Example 02 \u00b7 Windows Calculator\n            Rebuild Calculator\u2019s % button.\n            \n              We saw why 200 + 10% gives 220. Now let\u2019s recover\n              the rules for both + and \u00d7, and try them.\n            \n          \n          \n            \n              Goal\n              \n                Build a small calculator that handles\n                both + and \u00d7 correctly.\n              \n            \n            \n              Why reverse engineer it?\n              \n                The same button uses\n                different rules after + and \u00d7. We inspect the\n                installed app to find which number the percentage is applied to.\n              \n            \n          \n          \n            \n              Try the calculation\n              \n              200 +\n                20\n              \n              \n              \n                10% of 200 = 20. Then 200 + 20 = 220.\n              \n              \n                Interactive illustration of the inspected percentage rule.\n              \n            \n            \n              \n                REA returned\n                \n                  One branch divides by 100. The other also multiplies by the\n                    first number.\n                  The agent uses both to recreate the % button.\n                \n              \n              \n                For this example, previous = 200 and\n                current = 10.\n              \n              \n                \n                \n                  Use REA to inspect Windows Calculator\u2019s % button. Recover\n                    the rules after + and \u00d7, then build a small calculator that\n                    uses both.\n                \n              \n              \n                \n                if (operation == multiply || operation == divide) {\n  percent = current / 100;\n} else {\n  percent = current * previous / 100;\n}\n              \n              \n                \n                  With +\n                  \n                    Take 10% of the first number.10% of 200 = 20 \u2192 200 + 20 = 220\n                  \n                \n                \n                  With \u00d7\n                  \n                    Turn 10% into 0.1.200 \u00d7 0.1 = 20\n                  \n                \n              \n            \n          \n          \n            \n              From the installed app to a working % button\n            \n            \n              \n                01 \u00b7 REA reads calc.exeIt launches the Calculator appThe code opens ms-calculator:. The agent then\n                  selects the installed app\u2019s library.\n              \n              \n                02 \u00b7 REA reads the libraryReturn the % handler\u2019s codeThe function checks the operator and uses the constant\n                  100.\n              \n              \n                03 \u00b7 Your agent interprets itExplain and reproduce the rulesCrosscheck the branch with Microsoft\u2019s source, then try + and\n                  \u00d7 above.\n              \n            \n          \n          \n            See the real code and how the answer was checked\n\n            \n              \n                \n                0x180124945: MOV EAX, dword ptr [R13 + 0x18]\n0x180124949: CMP EAX, 0x5c\n0x18012494c: JZ 0x180124aba\n0x180124952: CMP EAX, 0x5b\n0x180124955: JZ 0x180124aba\n0x18012495b: MOV EDX, 0x64\n              \n              \n                \n                #define IDC_MUL 92      // 0x5c\n#define IDC_DIV 91      // 0x5b\n#define IDC_PERCENT 118 // 0x76\n\n0x64 = 100\n              \n            \n\n            \n              Inspected with REA 4.1.0: Windows Calculator 11.2508.4.0, x64. The\n              readable summary uses names from Microsoft\u2019s public source to\n              explain the recovered branch.\n            \n            \n              Percentage implementation\n              \u00b7\n              Microsoft\u2019s test cases\n              \u00b7 Native setup guide\n            \n          \n        \n\n      \n          \n            Your first investigation\n            Try REA on a small app.\n            \n              Download our Notes example, trace its CSV export, and check one\n              changed input.\n            \n          \n          Try the guided example\n        \n\n      \n          \n            Want to go deeper?\n            \n              Tell your agent what you want to understand or build. With REA,\n              you can work together on anything from\n              cloning this website to\n              reconstructing a game from its executable.\n            \n          \n          \n            \n              \n                \n                \n                  Use REA to inspect https://rea.tools/. Clone this website\n                    for me.\n                \n              \n              Yes, this one.\n            \n            \n              \n                \n                \n                  Use REA to reconstruct this game from its executable.\n                    Recover the gameplay logic in C and test it against the\n                    original.\n                \n              \n              \n                See the DX-Ball case study \u2192\n              \n            \n          \n          \n            For setup and analysis steps, choose your target:\n          \n          \n            \n              Native binaries\n              \n                Inspect functions, strings, references and call relationships in\n                executables and libraries.\n              \n              Native analysis guide\n            \n            \n              JavaScript & Electron\n              \n                Map modules, routes, IPC and native dependencies from an\n                application folder or ASAR archive.\n              \n              Application workflows\n            \n            \n              Browser & runtime activity\n              \n                Capture selected browser or process activity, then compare the\n                results across runs.\n              \n              Browser observation guide"
                ],
                "output": "readability",
                "pwd": "/data/archive/1791626739.861561",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-10T10:08:43.097041+00:00",
                "status": "succeeded"
            }
        ],
        "screenshot": [],
        "singlefile": [],
        "title": [
            {
                "cmd": [
                    "curl",
                    "--silent",
                    "--location",
                    "--compressed",
                    "--max-time",
                    "120",
                    "--user-agent",
                    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) curl/curl 8.14.1 (x86_64-pc-linux-gnu)",
                    "https://rea.tools/"
                ],
                "cmd_version": "curl 8.14.1 (x86_64-pc-linux-gnu)",
                "end_ts": "2026-10-10T10:08:43.089608+00:00",
                "index_texts": null,
                "output": "REA \u2014 Reverse Engineering for Your Coding Agent",
                "pwd": "/data/archive/1791626739.861561",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-10T10:08:43.068544+00:00",
                "status": "succeeded"
            }
        ],
        "wget": [
            {
                "cmd": [
                    "wget",
                    "--no-verbose",
                    "--adjust-extension",
                    "--convert-links",
                    "--force-directories",
                    "--span-hosts",
                    "--no-parent",
                    "-e",
                    "robots=off",
                    "--reject=js,mjs,woff,woff2,ttf,otf,eot,mp4,m4v,mov,webm,ogv,mkv,avi,flv",
                    "--timeout=120",
                    "--restrict-file-names=windows",
                    "--page-requisites",
                    "--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 ArchiveBox/0.7.4 (+https://github.com/ArchiveBox/ArchiveBox/) wget/GNU Wget 1.21.3",
                    "--compression=auto",
                    "--timestamping",
                    "https://rea.tools/"
                ],
                "cmd_version": "GNU Wget 1.21.3",
                "end_ts": "2026-10-10T10:08:43.059963+00:00",
                "index_texts": null,
                "output": "rea.tools/index.html",
                "pwd": "/data/archive/1791626739.861561",
                "schema": "ArchiveResult",
                "start_ts": "2026-10-10T10:08:42.407425+00:00",
                "status": "succeeded"
            }
        ]
    },
    "icons": null,
    "is_archived": true,
    "is_static": false,
    "latest": {
        "archive_org": null,
        "dom": null,
        "favicon": "favicon.ico",
        "git": null,
        "media": null,
        "pdf": null,
        "screenshot": null,
        "singlefile": null,
        "title": "REA \u2014 Reverse Engineering for Your Coding Agent",
        "warc": null,
        "wget": "rea.tools/index.html"
    },
    "link_dir": "/data/archive/1791626739.861561",
    "newest_archive_date": "2026-10-10T10:08:45.231783+00:00",
    "num_failures": 0,
    "num_outputs": 6,
    "oldest_archive_date": "2026-10-10T10:08:41.365610+00:00",
    "path": "/",
    "schema": "Link",
    "scheme": "https",
    "snapshot_id": "af5768e1-1c2f-48be-a083-33fb70fab234",
    "sources": [
        "/data/sources/1791626739-import.txt"
    ],
    "tags": null,
    "tags_str": "",
    "timestamp": "1791626739.861561",
    "title": "REA \u2014 Reverse Engineering for Your Coding Agent",
    "updated": "2026-10-10T10:08:41.365155+00:00",
    "updated_date": "2026-10-10 10:08",
    "url": "https://rea.tools/"
}