Kour.io Invisible hack

kour.io hacks with togglable options for invisibility and instant kill

目前为 2025-02-22 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Kour.io Invisible hack
  3. // @match *://kour.io/*
  4. // @license MIT
  5. // @version 1.3.0
  6. // @description kour.io hacks with togglable options for invisibility and instant kill
  7. // @run-at document-start
  8. // @grant unsafeWindow
  9. // @namespace https://gf.qytechs.cn/users/1422179
  10. // ==/UserScript==
  11.  
  12. const Signatures = {
  13. ping: "f3 07 01 00 00",
  14. pong: "f3 06 01 01 01",
  15. anotherPing: "f3 04 e2 03 e3",
  16. createGame: "f3 02 e3 03 ff 07 06",
  17. updateState: "f3 02 fd 02 f4 03 c8",
  18. damageTaken: "f3 04 c8 02 f5 15 04",
  19. connectStarts: "f3 02 e",
  20. connectEnds: "f1 1c e8 1c bf 0b 23"
  21. };
  22.  
  23. class Kour {
  24. constructor() {
  25. this.sockets = [];
  26. this.config = {
  27. Invisible: false,
  28. InstantKill: false
  29. };
  30. this.packets = 0;
  31.  
  32. unsafeWindow.WebSocket = class extends WebSocket {
  33. constructor() {
  34. super(...arguments);
  35. this.addEventListener("open", event => {
  36. kourInstance.sockets.push(this);
  37. kourInstance.hook(this);
  38. });
  39. }
  40. };
  41. }
  42.  
  43. hook(socket) {
  44. const send = socket.send;
  45. const onmessage = socket.onmessage;
  46.  
  47. socket.onmessage = (event) => {
  48. if (!event.data) return onmessage.call(socket, event);
  49.  
  50. this.packets++;
  51.  
  52. let hexArray = Array.from(new Uint8Array(event.data)).map(byte => byte.toString(16).padStart(2, '0'));
  53. let stringHexArray = hexArray.join(" ");
  54.  
  55. if (stringHexArray.startsWith(Signatures.ping) || stringHexArray.startsWith(Signatures.anotherPing)) {
  56. return onmessage.call(socket, event);
  57. }
  58.  
  59. if (stringHexArray.startsWith(Signatures.damageTaken) && this.config.Invisible) {
  60. return;
  61. }
  62.  
  63. return onmessage.call(socket, event);
  64. };
  65.  
  66. socket.send = (data) => {
  67. this.packets++;
  68.  
  69. let hexArray = Array.from(new Uint8Array(data)).map(byte => byte.toString(16).padStart(2, '0'));
  70. let stringHexArray = hexArray.join(" ");
  71.  
  72. if (stringHexArray.startsWith(Signatures.pong)) {
  73. return send.call(socket, data);
  74. }
  75.  
  76. if (stringHexArray.startsWith(Signatures.updateState) && this.config.InstantKill) {
  77. for (let i = 0; i < 40; i++) {
  78. send.call(socket, data);
  79. }
  80. return send.call(socket, data);
  81. }
  82.  
  83. return send.call(socket, data);
  84. };
  85. }
  86.  
  87. createMenu() {
  88. const menu = document.createElement("div");
  89. menu.style.position = "fixed";
  90. menu.style.top = "20px";
  91. menu.style.right = "20px";
  92. menu.style.background = "linear-gradient(145deg, #4f4f4f, #2f2f2f)";
  93. menu.style.padding = "15px";
  94. menu.style.borderRadius = "10px";
  95. menu.style.boxShadow = "0 4px 6px rgba(0, 0, 0, 0.3), 0 -4px 6px rgba(0, 0, 0, 0.2)";
  96. menu.style.color = "white";
  97. menu.style.fontFamily = "'Roboto', sans-serif";
  98. menu.style.fontSize = "14px";
  99. menu.style.zIndex = "9999";
  100. menu.style.cursor = "move";
  101. menu.style.display = "flex";
  102. menu.style.flexDirection = "column";
  103. menu.style.alignItems = "center";
  104. menu.style.transition = "none"; // Remover transição aqui para evitar a borda preta
  105.  
  106. // Título estilizado "LC Mod Menu"
  107. const title = document.createElement("div");
  108. title.textContent = "LC Mod Menu";
  109. title.style.fontSize = "22px";
  110. title.style.fontWeight = "bold";
  111. title.style.marginBottom = "15px";
  112. title.style.color = "#ff6f61";
  113. title.style.textShadow = "2px 2px 5px rgba(0, 0, 0, 0.3)";
  114. title.style.fontFamily = "'Poppins', sans-serif";
  115. menu.appendChild(title);
  116.  
  117. let isDragging = false;
  118. let offsetX, offsetY;
  119.  
  120. menu.addEventListener("mousedown", (e) => {
  121. isDragging = true;
  122. offsetX = e.clientX - menu.getBoundingClientRect().left;
  123. offsetY = e.clientY - menu.getBoundingClientRect().top;
  124. });
  125.  
  126. document.addEventListener("mousemove", (e) => {
  127. if (isDragging) {
  128. menu.style.left = `${e.clientX - offsetX}px`;
  129. menu.style.top = `${e.clientY - offsetY}px`;
  130. }
  131. });
  132.  
  133. document.addEventListener("mouseup", () => {
  134. isDragging = false;
  135. menu.style.transition = "transform 0.2s ease-in-out"; // Adicionar transição após o movimento
  136. });
  137.  
  138. const createOption = (label, configKey) => {
  139. const button = document.createElement("button");
  140. button.textContent = `${label}: OFF`;
  141. button.style.margin = "5px";
  142. button.style.padding = "10px 15px";
  143. button.style.border = "none";
  144. button.style.borderRadius = "5px";
  145. button.style.backgroundColor = "#444";
  146. button.style.color = "white";
  147. button.style.cursor = "pointer";
  148. button.style.fontWeight = "bold";
  149. button.style.transition = "all 0.3s";
  150.  
  151. button.addEventListener("mouseover", () => {
  152. button.style.backgroundColor = "#555";
  153. });
  154.  
  155. button.addEventListener("mouseout", () => {
  156. button.style.backgroundColor = this.config[configKey] ? "#4CAF50" : "#444";
  157. });
  158.  
  159. button.addEventListener("click", () => {
  160. this.config[configKey] = !this.config[configKey];
  161. button.textContent = `${label}: ${this.config[configKey] ? 'ON' : 'OFF'}`;
  162. button.style.backgroundColor = this.config[configKey] ? "#4CAF50" : "#444";
  163. });
  164.  
  165. menu.appendChild(button);
  166. };
  167.  
  168. createOption("INSTANT KILL", "InstantKill");
  169. createOption("INVISIBLE", "Invisible");
  170.  
  171. document.body.appendChild(menu);
  172. }
  173. }
  174.  
  175. const kourInstance = new Kour();
  176. window.addEventListener("load", () => {
  177. kourInstance.createMenu();
  178. });

QingJ © 2025

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