IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Hackovanie webových hier pomocou JavaScriptu

Väčšina z nás určite vždy chcela urobiť nejaké hacky alebo topánky do hier. A tak som sa rozhodol, že ukážem, ako na to bez použitia makro a iných vecí, ktoré z 99% nefungujú.

Bohužiaľ som článok mohol vydať až teraz, pretože majiteľ mi nechcel umožniť publikácii počas toho, čo sú tieto skripty funkčné. Budeme používať API hier proti nim a tým si vytvoríme automatizované programy a vylepšenia. Budeme používať:

Ak netušíte, o čo sa jedná, prečítajte si niečo z kurzov o týchto jazykoch tu na ITnetwork;)

Úvod do hackovanie hier

V úvode by som rád vysvetlil základné princípy botování hier. Z väčšiny nám ide o to, aby sme si ušetrili veľa času, ktorý nám hra zožiera repetitívnymi akciami. A v každej hre je nejaká repetitívne funkcie. Avšak nemôžeme povedať, že topánok môže robiť len repetitívne akcie. Topánok je šikovný tak, ako si ho urobíme.

Javascript

Webové hry majú obrovskú slabinu v JavaScripte. To je jazyk, ktorý nie je iba na serveri, ale hra ho používa bežne na klientovom strane (teda u nás v počítači). Navyše väčšina informácií je uložená priamo v štruktúre HTML stránky. Kto je bystrejší, určite prišiel na to, na čo narážame. Ide o prepojenie HTML DOM s JavaScriptom spôsobom, že z DOM čítame dáta a JavaScript za nás vykonáva činnosti, ktoré by sme inak museli robiť manuálne ako hráči.

Kde si vyskúšame nášho topánka, ktorého si zostrojíme v priebehu týchto článkov? Každý pravdepodobne pozná preslávené Gameforge, ktoré žiaľ už nie je tak slávne, ako bolo. A jedna ukážková hra, do ktorej ma skôr bavilo písať topánka, než ju hrať, je Gladiatus. Kto by tiež chcel stále klikať a potom čakať X minút, než sa niečo stane? Na toto môžeme mať predsa počítač.

Ako nadšenec do hack hier ako webových tak i stolných som aj hry robil a viem, ako je ťažké hru zabezpečiť. Tí z vás, ktorí si myslia, že to je ľahké, ste mierne na omyle.

Použité nástroje

Na používanie a písanie botov v JavaScripte používam webstore a CustomStyleScript (Addon) v Mozilla Firefox. Prehliadač môžete nechať bežať 24/7 a ak je skript napísaný dobre, nemusíte naň siahnuť.

Príklad extrakcie hodnoty pomocou id

Pre extrakciu dát pre topánka je užitočné jQuery. Bohužiaľ nie všade funguje a tak použijeme defaultný funkcie JavaScriptu ako document.getElementById().

Začnime teda s extrakciou zostávajúceho času v hre Gladiatus pomocou tejto funkcie z tohto poľa:

JavaScriptu zdrojákoviště - Základná konštrukcia jazyka

Kód funkcie je nasledovné:

function tiam() {
   var time = document.getElementById("cooldown_bar_text_expedition").innerHTML; // Extrakce hodnot v tvaru hodiny:minuty:sekundy
        var tt = time.split(":"); // Rozdělení hodnot na jednotlivé
        return parseInt(tt[0]) * 60 * 60 + parseInt(tt[1]) * 60 + parseInt(tt[2]); // Parsování hodnot na čísla pro číselné operace
}

Takto môžeme veľmi jednoducho v nejakom časovom intervale sledovať, ako čas postupuje, a až dosiahne vytúženú hodnoty, môžeme automaticky na niečo kliknúť, bez toho aby sme my sedeli pri počítači. Ako vykonať takúto akciu si ukážeme za okamih. Hra tak môže bežať stále v pozadí a my budeme ihneď na všetko reagovať.

Ukladanie dát botovi

Čo keď si naopak chceme niečo uložiť?

Pre ukladanie dát botovi použijeme cookies. Nesmieme ale zabudnúť, že topánok musí byť spustený hneď pri načítaní stránky. Spustenie skriptu pri načítaní stránky zaistíme takto:

window.addEventListener('load', function() { // Spuštěné funkce při načtení

runRoutine(); // Naše rutina, co se bude provádět po načtení

if (getCookie("Ch")=="nejakeData") {
    setCookie("Ch",0);
}


})

Vykonanie akcie - Zbieranie denné odmeny

V tomto príklade si ukážeme len základ a to, ako napríklad urobiť, aby nám topánok zbieral každý deň denné odmenu. Spomenuli sme, že pri načítaní sa spustí funkcia runRoutine(), tak ju použijeme:

function runRoutine() {
        if (document.getElementById("header_LoginBonus")) {
        document.getElementById("linkLoginBonus").click();
    }
}

Len sme vybrali element a jednoducho naň klikli metódou click().

Kompletizácia pre finálnu použitie

Pôvodne som chcel ukázať zber darčekov pomocou skriptu, kde skript sleduje, či tlačidlo existuje a klikne na neho. Kód prikladám rovnako pre prípad, že by to znova pridali, ako príklad, ako idú tieto situácie riešiť. Darčeky ale v hre už odobrali a tak sem dávam príklad s útokom.

Ak naše funkcie tiam() pre zostávajúci čas vyššie navráti nulu, môžeme znova zaútočiť. Nebudeme však používať klasický prístup cez tlačidlo, pretože by to bolo zbytočne zložité. Keď nahliadneme do zdrojového kódu stránky, objavíme, že sa po stlačení volá funkcie:

attack(null, '0', 1, 0, '')

Na to sme prišli týmto spôsobom:

JavaScriptu zdrojákoviště - Základná konštrukcia jazyka
Samozrejme každá hra je naprogramovaná inak a obslužná funkcia tam nemusí byť takto jednoducho viditeľná. Potom je ľahšie tlačidlo vybrať a zavolať click(), ako sme si už tiež ukazovali.

Ale späť k funkcii attack(). Všimnite si jej parametrov. Vývojári sa nesnažili zakryť funkčnosť, ale aj tak nám nechali prakticky API pre nášho topánka.

Keď budeme s parametrami trochu experimentovať, môžeme striedať útoky na nepriateľov alebo aj iné lokácie:

function runRoutine() {
        if (tiam() <= 0) {
        attack(null, '0', 1, 0, '');
    }
}

window.addEventListener('load', function() { // Spuštěné funkce při načtení

runRoutine(); // Naše rutina, co se bude provádět po načtení

});

Akonáhle naše funkcie uvidí, že čas pre ďalší útok vypršal, zavolá funkciu attack() hry a začne ďalšia. Práve sme si ušetrili 90% herného času a zmysle hry:

JavaScriptu zdrojákoviště - Základná konštrukcia jazyka

Toto bola len jednoduchá ukážka fungovanie botov skriptovanie v JavaScripte.


 

Všetky články v sekcii
JavaScriptu zdrojákoviště - Základná konštrukcia jazyka
Článok pre vás napísal Jiri Otoupal
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se věnuje Zabezpečení Softwaru, Inovaci v sítích , Správa Serverů,Malware,Exploiting, Penetration Testing
Aktivity