Study how Akamai's bot-detection virtual machine is structured internally.
Turn obfuscated VM bytecode into a readable control-flow graph.
Learn static decompilation techniques like inlining and collapsing passes.
Research how anti-bot systems hide logic inside custom virtual machines.
| alana72212/akamai-vm | aaronz345/athena-personal-academic-page | geanofeefoundry/geanos-soundscape-realism | |
|---|---|---|---|
| Stars | 20 | 20 | 20 |
| Language | JavaScript | JavaScript | JavaScript |
| Setup difficulty | hard | moderate | easy |
| Complexity | 5/5 | 2/5 | 2/5 |
| Audience | researcher | researcher | general |
Figures from each repo's GitHub metadata at analysis time.
No bytecode parser is included, it is meant to demonstrate technique, not run end to end.
This repository is a decompiler for Akamai's bot-detection system, which is used by websites like Hilton to tell apart real visitors from automated bots. Akamai protects itself partly by running obfuscated JavaScript inside a custom virtual machine, essentially a small, hidden computer running inside your browser. This project reverse-engineers and decompiles that virtual machine back into readable code. A virtual machine in this context is a simple interpreter: it reads a sequence of instructions (opcodes) one at a time and executes them, using a stack (a temporary scratch space where values are pushed on and popped off) to pass data between operations. The author describes Akamai's VM as having a fairly straightforward architecture, taking about two days to analyze and implement a decompiler for. The main interesting features were a property-resolution system where the VM searches down the stack to find a named value, and an exit mechanism that deliberately calls a non-existent opcode to terminate, relying on a try/catch wrapper in the main loop to silently swallow the resulting error. The decompiler works by reading the VM bytecode, constructing a control-flow graph (a map of how different code paths connect), and then applying cleanup passes like inlining and collapsing to produce cleaner output. It is a static decompiler, meaning it analyzes the code without running it, and does not include a parser for the raw bytecode format, the intention is to share decompilation techniques rather than provide a complete end-to-end tool. The project is stated to be for educational and research purposes.
A research tool that decompiles Akamai's obfuscated bot-detection virtual machine back into readable code, for educational study.
Mainly JavaScript. The stack also includes JavaScript.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly researcher.
This repo across BitVibe Labs
Verify against the repo before relying on details.