yes
// ==UserScript== // @name ShellShockers Aimbot and ESP // @namespace http://tampermonkey.net/ // @version 0.1 // @description yes // @author PacyTense // @match *://shellshock.io/* // @run-at document-start // @grant none // @noframes // ==/UserScript== window.settings = { blueTeam: "#4254f5", redTeam: "#eb3326", orangeTeam: "#fca503", aimbotKey: "ShiftLeft", angleOrDistance: true, aimbotSmoothness: 2, maxAngle: 3, fov: 1.25, } window.aimbotToggled = false; window.addEventListener('keydown', function(e){ if(e.code == window.settings.aimbotKey){ window.aimbotToggled = true; } }) window.addEventListener('keyup', function(e){ if(e.code == window.settings.aimbotKey){ window.aimbotToggled = false; } }) window.dist3d = (player1, player2)=>{return Math.sqrt((player1.x-player2.x)**2 + (player1.y-player2.y)**2 + (player1.z-player2.z)**2)}; window.angleDistance =(player1, player2)=>{ let angle = window.getAngle(player1, player2); const angleDist = Math.sqrt((player1.yaw - angle.yaw)**2 + (player1.pitch - angle.pitch)**2); return angleDist*window.dist3d(player1, player2); } window.getNearestPlayer = function(us, enemies){ let nearestPlayer = {distance: null, player: null} //we leave it empty to start enemies.forEach(them=>{ if(them){ //sometimes a glitched player slips thorugh, so lets make sure they are valid before we do anything if(them.id != us.id){ //our own player is in here, so lets make sure to filter it out if(them.hp > 0 && them.playing && (!us.team || (us.team != them.team)) && window.visiblePlayers[them.id]){ //firstly lets make sure they arent dead hp > 0, then make sure they are playing and not spectating //then lets check if our team is equal to their team //one thing to note, in FFA both our teams are 0, so it would never run cause it would think we are on their team //so what we do is if(us.team) will return false for team = 0 and true for team != 0 // so it is effectivly if our team is 0 (FFA) or our team isnt equal to their team``` let distance = 999; if(window.settings.angleOrDistance){ distance = window.angleDistance(us,them) || 0; }else{ distance = window.dist3d(us,them) || 0; } if( !nearestPlayer.distance || distance < nearestPlayer.distance ){ nearestPlayer.distance = distance; nearestPlayer.player = them; } } } } }) if(nearestPlayer.player){ return nearestPlayer; } return null; } window.calcAngle = function(us, them, dist){ let delta = {x: them.x - us.x + 2*(them.dx * dist / us.weapon.subClass.velocity), y: them.y-us.y - 0.072, z: them.z - us.z + 2*(them.dz * dist / us.weapon.subClass.velocity) }; delta = new BABYLON.Vector3(delta.x, delta.y, delta.z).normalize(); const newYaw = Math.radRange(-Math.atan2(delta.z, delta.x) + Math.PI / 2) const newPitch = Math.clamp(-Math.asin(delta.y), -1.5, 1.5); us.pitch += ((newPitch || 0)-us.pitch)/window.settings.aimbotSmoothness; us.yaw += ((newYaw || 0)-us.yaw)/window.settings.aimbotSmoothness; return 0; } window.getAngle = function(us, them){ let delta = {x: them.x - us.x , y: them.y-us.y - 0.072, z: them.z - us.z, }; delta = new BABYLON.Vector3(delta.x, delta.y, delta.z).normalize(); const newYaw = Math.radRange(-Math.atan2(delta.z, delta.x) + Math.PI / 2) const newPitch = Math.clamp(-Math.asin(delta.y), -1.5, 1.5); return {pitch: newPitch || 0, yaw: newYaw || 0}; } //aimbot function window.otherPlayer; window.myPlayer; window.espColourSettings = function(that){ if(that.player.team==1){ that.bodyMesh.overlayColor = hexToRgb(window.settings.blueTeam); }else if(that.player.team==2){ that.bodyMesh.overlayColor = hexToRgb(window.settings.redTeam); }else{ that.bodyMesh.overlayColor = hexToRgb(window.settings.orangeTeam); } that.bodyMesh.setRenderingGroupId(1); } window.doAimbot = (ourPlayer,otherPlayers)=>{ if(!window.aimbotToggled){return}; if(!window.myPlayer){ otherPlayers.forEach(player=>{ if(player){ if(player.ws){ window.myPlayer = player; }} }) }; //loop through other palyers let nearest = window.getNearestPlayer(ourPlayer, otherPlayers); if(nearest){ //console.log(nearest.name); calcAngle(window.myPlayer, nearest.player, nearest.distance) } }; window.visiblePlayers = {}; //The game Does hack check, where if a hack is detected, it sets ur uuid to 255 which stiops u from doing damage //what we do here is redefine the varaible to always return 0 so they can never flag us hehehe Object.defineProperty(window, "uuid", {get: ()=>{return 0}}); //stuff from here on is code used to extract code from the games code, trippy right? const request = url => fetch(url).then(res => res.text()); const injectInline = (data) => { let s = document.createElement('script'); s.type = 'text/javascript'; s.innerText = data; document.getElementsByTagName('head')[0].appendChild(s); } window.hexToRgb =(hex)=>{ var r###lt = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return r###lt ? { r: parseInt(r###lt[1], 16)/255, g: parseInt(r###lt[2], 16)/255, b: parseInt(r###lt[3], 16)/255, a: 1, } : null; } const attemptPatch = (source) => { const patches = new Map() //we get a copy of theg games code, and search for specific location. We found our player stuff and then call our external function where we can run our aimbot logic! .set("RENDERHOOK", [/var (\w+)=([a-zA-Z$]+)\(this\.mesh,\.(\d+)\);/, "rep = `var ${match[1]} = ${match[2]}(this.mesh,.31);window.visiblePlayers[this.player.id]=${match[1]};${match[1]}=true;this.bodyMesh.renderOverlay = !0;window.espColourSettings(this);`", true]) .set("PLAYERHOOK", [/if\([^(\/.,)]+\)([^(\/.,)]+)\.actor\.update\([^(\/.,)]+\);/, false]) .set("ENEMYHOOK", [/var [^(\/.,=]+\=([^(\/.,\[\]]+)\[[^(\/.,\[\]]\];[^(\/.,=&]+\&\&\([^(\/.,=]+\.chatLineCap/, false]) .set("AIMBOTHOOK", [/[^(\/.,]+\([^(\/.,]+,[^(\/.,]+\/\d+\),[^(\/.,]+\.runRenderLoop\(\(function\(\)\{/, "rep = `${match[0]}window.doAimbot(${variables.PLAYERHOOK[1]}, ${variables.ENEMYHOOK[1]});`", true]) variables = {}; for (const [name, item] of patches) { let match = source.match(item[0]); if(!item[1]){ if(match){ variables[name] = match; }else{ alert(`Failed to variable ${name}`); continue; } }else{ let rep; try{ eval(item[1]); }catch(e){ alert(`Failed to patch ${name}`); continue; } console.log(rep); const patched = source.replace(item[0], rep); if (source === patched) { alert(`Failed to patch ${name}`); continue; } else console.log("Successfully patched ", name); source = patched; } } return source; } (async function() { let script = await request(`https://shellshock.io/src/shellshock.min.js`); console.log(script); injectInline(attemptPatch(script)) //modify the games code and then apply it :)) })(); //using a mutation observer oooohhh fancy ik! we can detect scripts before they run and patch them. let observer = new MutationObserver(mutations => { for (const mutation of mutations) { for (let node of mutation.addedNodes) { if (node.tagName == 'HEAD') { } else if (node.tagName == 'SCRIPT' && node.src.includes("shellshock.min.js")) { node.outerHTML = `` //or we can make it point towards our own custom JS file... //node.src = "https://ourFileLocation/code.js" } } } }); observer.observe(document, { childList: true, subtree: true })