EasyRE-Agent โ€“ an AI agent that solves crackmes and checks its own answers EasyRE-Agent, a new open tool, runs an AI agent inside a Docker container preloaded with a reverse-engineering toolchain (Ghidra, Detect It Easy, Wine, and .NET, Python, Java and JavaScript decompilers) to solve crackmes and CTF binaries, accepting only answers that pass a regex, success message or user-supplied command. The agent works with Claude Code, OpenAI Codex, or any OpenAI-compatible API including OpenRouter, Ollama, LM Studio and vLLM, and adds hint and tutor modes that guide users without revealing the answer, plus per-job time and token budgets, resumable jobs, and reports logging the exact model, time and tokens used. The project requires about 10 GB of free disk space and is intended for crackmes, CTF reversing challenges and puzzle binaries, not for analyzing real malware. Give it a binary and a task. Pick any model. Get the answer, or learn how to find it yourself. EasyRE-Agent runs an AI agent inside a Docker container. The container holds your reverse engineering toolchain, and the agent uses it to solve a task you give it. ๐Ÿ“ tasks/crackme โ”€โ–บ ๐Ÿ”Ž triage โ”€โ–บ ๐Ÿค– agent your model โ”€โ–บ โœ… verifier โ”€โ–บ ๐Ÿ“„ report.md / ๐Ÿ’ก hints.md | | Feature | | |---|---|---| | ๐Ÿค– | Any model | Claude Code, OpenAI Codex, or any OpenAI-compatible API: OpenRouter, Ollama, LM Studio, vLLM | | โœ… | Verified answers | Checks against a regex, a success message, or your own command. The agent keeps working until a candidate passes. | | ๐ŸŽ“ | Hint mode | The agent solves privately and gives you graded hints, one at a time. The answer stays hidden, including in the console output. | | ๐Ÿง‘๐Ÿซ | Tutor mode | An interactive tutor: you tell it what you did, and it guides you step by step without spoiling the answer | | ๐Ÿ’ฐ | Stats | Totals of time, tokens and cost per model over all jobs | | โฑ๏ธ | Budgets | Time and token limits per job | | ๐Ÿ” | Resumable | Continue a job later with more time or a different model | | ๐Ÿ”Ž | Triage | File types, runtimes and packers detected up front | | ๐Ÿ“„ | Reports | Answer, solution path, scripts, dead ends, exact model, time and tokens | | ๐Ÿงฐ | Your toolchain | Plug-in install script plus Markdown skills playbooks the agent reads on demand | Reversing a crackme or a CTF binary is mostly the same loop every time: figure out what the file is, pick the right tools, find the check, pull out the constants, write a small solver, and confirm the answer. An AI agent can do much of that loop, but in practice three things get in the way: - The toolchain. A typical task needs a mix of Ghidra, Detect It Easy, Wine, and decompilers for .NET, Python, Java or JavaScript. Installing and wiring all of that on every machine is slow and fragile. EasyRE-Agent ships it as one Docker image that behaves the same on Windows, Linux and macOS. - Guessing. Without tools and a checker, a model tends to produce an answer that only looks plausible. Here the agent works on the real file with real tools, follows a playbook skill for that kind of target, and an answer counts only when the program or your checker accepts it. - Lock-in. It works with Claude, Codex or any OpenAI-compatible model, including local ones, so you can use what you already have and compare models on the same task. It is also built for learning. Being handed the answer teaches little, so hint and tutor modes let the agent solve the task privately and then guide you toward the solution without spoiling it. EasyRE-Agent is meant for crackmes, CTF reversing challenges and puzzle binaries, not for analyzing real malware see Pick your system: ๐Ÿ’ป Windows -windows ยท ๐Ÿง Linux -linux ยท ๐ŸŽ macOS -macos You need about 10 GB of free disk space see ๐Ÿ’พ Disk space -disk-space . 1. Install Docker. Get Docker Desktop https://www.docker.com/products/docker-desktop/ , install it with the default settings WSL 2 , and start it. 2. Run the setup. Double-click setup.cmd in the project folder. It builds the image, asks which model to use, logs you in and checks everything see โš™๏ธ What the setup does %EF%B8%8F-what-the-setup-does . 3. Add a task. Put the files into a folder under tasks : tasks\crackme\crackme.exe tasks\crackme\task.md description, optional 4. Solve it. Open PowerShell or Command Prompt in the project folder: The first command solves the task. The second opens the report. .\easyre.cmd run crackme --success "Correct" .\easyre.cmd open 1. Install Docker. Install Docker Engine https://docs.docker.com/engine/install/ with the Compose plugin. Then let your user run Docker without sudo , and log out and back in: sudo usermod -aG docker $USER 2. Run the setup in the project folder: sh setup.sh 3. Add a task: put its files into tasks/crackme/ plus an optional task.md with the description . 4. Solve it: sh easyre.sh run crackme --success "Correct" sh easyre.sh open The image is x86-64 Wine needs 32-bit x86 libraries . On ARM Linux it runs only with x86 emulation qemu/binfmt and is slow. 1. Install Docker. Get Docker Desktop for Mac https://www.docker.com/products/docker-desktop/ and start it. On Apple Silicon M1โ€“M4 , enable Settings โ†’ General โ†’ Use Rosetta for x86 64/amd64 emulation . The image is x86-64, so it runs emulated there: it works, but builds and runs more slowly. 2. Run the setup in Terminal, in the project folder: sh setup.sh 3. Add a task: put its files into tasks/crackme/ plus an optional task.md with the description . 4. Solve it: sh easyre.sh run crackme --success "Correct" sh easyre.sh open ๐Ÿ“ The examples below use the Windows form .\easyre.cmd . On Linux and macOS, write sh easyre.sh instead; everything else is the same. 1. Checks that Docker runs. 2. Builds the image the first build takes several minutes . 3. Asks which model you want to use and logs you in: Choice You need ๐ŸŸ  Claude subscription recommended Claude Pro or Max account ๐ŸŸ  Claude API key Anthropic API key ๐ŸŸข ChatGPT account via Codex ChatGPT account ๐ŸŸข OpenAI API key OpenAI API key ๐Ÿ”ต OpenRouter OpenRouter API key ๐Ÿ’Ž Google Gemini Gemini API key from aistudio.google.com ๐Ÿฆ™ Ollama local, free Ollama running with a model that supports tool calling ๐Ÿ–ฅ๏ธ LM Studio local, free LM Studio server running 4. Runs easyre doctor to check that everything works. --success is the text the program prints when the answer is right. Leave it out if the program prints nothing like that. .\easyre.cmd doctor doctor checks your model profile, credentials, API connection, Wine and skills. It shows each problem together with how to fix it. To switch models later, run the setup again, or see ๐ŸŽ›๏ธ Profiles %EF%B8%8F-profiles . Colors: the output is colored. If you see codes like โ† 32m instead of colors, use Windows Terminal, or add NO COLOR=1 to .env . easyre run TARGET options solve a task folder or file under ./tasks easyre resume JOB options continue a job easyre hint JOB --answer next hint or reveal the answer easyre tutor JOB continue a tutor conversation easyre jobs list jobs easyre open JOB folder open a job's report or tutor chat, or folder easyre profiles list model profiles easyre doctor check that the setup works easyre stats time, tokens and cost per model easyre close JOB mark a job as closed resume reopens it easyre rm JOB... | --FILTER delete job folders; filters: --open --closed --unsolved --solved --all easyre login claude|codex authenticate a backend | Option | Description | |---|---| | --desc / --desc-file | Task description. Default: task.md , opis.txt or README.md from the task folder. | | --success REGEX | Output that means the answer was accepted | | --verify CMD | Checker command. {} is replaced by the candidate; otherwise the candidate goes to stdin. | | --flag-format REGEX | Required answer shape, e.g. "flag\{.+\}" | | --profile | Model profile from config/backends.toml | | --backend | claude default , codex or openai | | --model | Model name for the backend | | --mode | solve default , hint or tutor | | --budget-min / --budget-tokens | Time budget in minutes default 120 and output-token budget | | --logs | Stream the agent's commands live instead of the progress bar | | -i | Interactive session Claude Code / Codex UI | .\easyre.cmd run crackme --success " ?i correct" .\easyre.cmd run keygenme --verify "wine /work/src/app.exe {}" --success "Valid" .\easyre.cmd run ctf-rev --flag-format "CTF\{.+\}" .\easyre.cmd run crackme --mode hint .\easyre.cmd hint crackme .\easyre.cmd run crackme --mode tutor --success "Correct" .\easyre.cmd tutor crackme .\easyre.cmd run crackme --backend openai --model qwen3-coder --budget-min 30 .\easyre.cmd resume crackme --budget-min 60 .\easyre.cmd open .\easyre.cmd open crackme .\easyre.cmd open crackme folder 1. Opens the newest job's report.md or tutor.md for tutor jobs in your default app. 2. Opens the newest job whose name starts with crackme . 3. Opens that job's folder in Explorer. open runs on your computer, not in Docker, so it starts instantly. .\easyre.cmd run crackme --mode tutor --success "Correct" 1. The agent first solves the task privately. The console shows only progress, so nothing spoils the answer. 2. Then a chat starts. Tell it what you did and what you see, and it replies to where you are: it confirms the right path, warns about dead ends, and suggests one small next step. tutor This is a small 64-bit console program. What have you tried so far? you I found main, it calls checkPassword. What next? tutor Good. Look at what checkPassword compares its argument with... | Command | What it does | |---|---| | /hint | Ask for a nudge | | /answer | Reveal the answer asks for confirmation | | /quit | Leave. Continue later with easyre tutor