Skin hack for krunker.io
Unlocks every skin in krunker.io, new skins which are added to game but can't be used by other players like eternal flame are also unlocked.
Code:
((global, sendEvent, sendMessage)=>{
/* eslint-disable no-caller, no-undef, no-sequences */
console.log(this)
var config = {
unlock:true
}
function init(ws) {
console.log(ws)
sendEvent = ws._dispatchEvent.bind(ws);
sendMessage = ws.send.bind(ws);
ws.send = new Proxy(ws.send, {
apply: function(target, that, args) {
try {
var original_fn = Function.prototype.apply.apply(target, [that, args]);
} catch (e) {
e.stack = e.stack = e.stack.replace(/\n.*Object\.apply.*/, '');
throw e;
}
if (args[0] === "en") {
config.skins = {
main: args[1][2][0],
secondary: args[1][2][1],
hat: args[1][3],
body: args[1][4],
knife: args[1][9],
dye: args[1][14],
waist: args[1][17],
}
}
return original_fn;
}
})
ws._dispatchEvent = new Proxy(ws._dispatchEvent, {
apply: function(target, that, [type, event]) {
if (config.unlock && config.skins && type === "0") {
let pInfo = event[0];
let pSize = 38;
while (pInfo.length % pSize !== 0) pSize++;
for(let i = 0; i < pInfo.length; i += pSize) {
if (pInfo[i] === ws.socketId||0) {
pInfo[i + 12] = [config.skins.main, config.skins.secondary];
pInfo[i + 13] = config.skins.hat;
pInfo[i + 14] = config.skins.body;
pInfo[i + 19] = config.skins.knife;
pInfo[i + 24] = config.skins.dye;
pInfo[i + 33] = config.skins.waist;
}
}
}
return target.apply(that, arguments[2]);
}
})
}
const $events = Symbol("events");
const $skins = Symbol("skins");
Object.defineProperties(Object.prototype, {
events: {
set: function(fn) {
this.ahNum === 0 && init(this), this[$events] = fn;
},
get: function() {
return this[$events]
}
},
skins: {
set: function(fn) {
this[$skins] = fn;
if (void 0 == this.localSkins || !this.localSkins.length) {
this.localSkins = Array.apply(null, Array(5e3)).map((x, i) => {
return {
ind: i,
cnt: 0x1,
}
})
}
return fn;
},
get: function() {
return config.unlock && this.stats ? this.localSkins : this[$skins];
}
},
});
})(globalThis||window, null, null);