So hacken Sie Webbrowser-Spiele/Canvas

Sbenny.com genießt das Vertrauen von 1,335,132 zufriedene Benutzer Seit 1987.
Registrieren

TD Stuart

News Lv1️⃣
Mitglied seit 6 Jahren
So hacken Sie Webbrowser-Spiele
Ich empfehle, Javascript zu lernen bzw. Programmierkenntnisse zu haben.
Hinweis: Dies ist keine vollständige Anleitung zum Hacken von Browserspielen, obwohl sie Ihnen auf Ihrem Weg zum Hacken von Webspielen helfen soll. Außerdem bin ich kein Experte und spreche die meisten dieser Dinge aus dem Gedächtnis. Wenn also etwas davon falsch ist, korrigieren Sie mich bitte!


Beginnen wir mit den Grundlagen, JavaScript.

Was ist Javascript und in welcher Beziehung steht es zum Hacken von Spielen?
Die meisten für Ihren Browser geschriebenen Spiele sind in JavaScript geschrieben. Im Gegensatz zu den meisten Programmiersprachen, in denen Spiele geschrieben sind, wird JavaScript vor der Ausführung nicht kompiliert. Warum ist uns das wichtig? Nun, das bedeutet, dass Ihre herkömmlichen Speicher-Hacking-Techniken nicht sehr nützlich sein werden. Dies liegt daran, dass Javascript zur Laufzeit kompiliert wird, sodass Sie nicht einfach den Assemblercode bearbeiten können, beispielsweise für die Injektion. Ganz zu schweigen von der Tatsache, dass Ihr Browser den Speicher eines Javascript-Programms nicht jedes Mal an derselben Stelle zuordnet, sodass Zeiger nicht wirklich existieren. Während Sie die Cheat-Engine für Javascript-Spiele zum Laufen bringen können, ist es kein Tool, das Sie wirklich benötigen.

Sie fragen sich vielleicht, wie man Javascript-Spiele hackt. Da Javascript nicht kompiliert ist, liegt es in einem viel besser lesbaren Format vor. Sie können den Code auch problemlos ändern und der Browser führt ihn aus. Schauen wir uns also eine Beispielfunktion für ein Javascript-Spiel an, das sich mit der Gesundheit eines Spielers befasst.

JavaScript:
function damagePlayer(playerObject, damageValue){
    updatePlayerHealth(playerObject, (playerObject.health - damageValue) );
}

function updatePlayerHealth(playerObject, healthValue){
    playerObject.health = healthValue;
    Game.overlay.gui.healthText.value = playerObject.health;
    Game.overlay.gui.healthBar.value = playerObject.health;
}
Im obigen Code sehen wir eine Funktion namens updatePlayerHealth, die Änderungen an der Gesundheit unseres Players anwendet und die GUI aktualisiert. Nun, wenn Sie die Cheat-Engine für ein normales Spiel verwenden, würden Sie das finden playerObject.health = healthValue; Zeile soll die Zeile sein, die den Gesundheitswert des Spielers schreibt. Sie könnten das einfach mit 100 statt mit dem neuen überschreiben healthValue. Auf diese Weise haben Sie immer 100 Gesundheit. Nun, in Javascript machen Sie genau das Gleiche! Ihr Code für die updatePlayerHealth-Funktion würde so aussehen:

JavaScript:
function updatePlayerHealth(playerObject, healthValue){
    playerObject.health = 100;
    Game.overlay.gui.healthText.value = playerObject.health;
    Game.overlay.gui.healthBar.value = playerObject.health;
}
So bearbeiten und injizieren Sie JavaScript!
Okay, das Bearbeiten von Javascript ist ziemlich einfach. Wie fängt man also an, das Javascript eines Zielspiels zu bearbeiten, um das zu tun, was man will? Besorgen Sie sich zunächst eine Kopie des Spielcodes. Sie können dies tun, indem Sie die Entwicklertools Ihres Browsers (wie Chrome Dev Tools) öffnen und zur Registerkarte „Quellen“ gehen, um den Spielcode zu finden. Normalerweise wird es als solche gekennzeichnet und ist eine ziemlich große Datei. Sie können es dann herunterladen und mit einem Texteditor öffnen (Sieht der Code seltsam/kompakt aus? Nun, der Code ist möglicherweise verkleinert oder verschleiert. Lesen Sie weiter, um herauszufinden, wie Sie damit umgehen!). Nachdem Sie es nun in einem Texteditor haben, können Sie den Code finden, den Sie bearbeiten möchten, und ihn neu schreiben. (Beachten Sie, dass die meisten Online-Spiele über Serverprüfungen verfügen. Denken Sie also darüber nach, bevor Sie den God-Modus in einem Online-Shooter ausprobieren. Später werde ich über das Debuggen von Javascript-Code sprechen, um herauszufinden, was Sie bearbeiten möchten!) Okay, jetzt, da Sie Änderungen daran vorgenommen haben Code, wie können Sie ihn laden, wenn Sie auf die Website gehen? Nun, das bringt uns zum Injizieren.

Es gibt eine ganze Reihe von Tools, mit denen Sie Javascript einschleusen können: Chrome-Erweiterungen und Tampermonkey. Beginnen wir mit Chrome-Erweiterungen. Mit Chrome-Erweiterungen können wir Code in den Browser laden. Wir können Chrome-Erweiterungen verwenden, um die ursprüngliche Spielcodedatei zu blockieren und dann unseren benutzerdefinierten Spielcode mit Inhaltsskripten zu laden (googlen Sie, wie das geht!). Sie können Tampermonkey auch verwenden, um den Originalcode zu blockieren und unseren benutzerdefinierten Code zu laden. Der beste Weg, benutzerdefinierten Code zu laden, ist über eine Website. Laden Sie Ihre Datei daher beispielsweise in eine Dropbox hoch. (Wenn Sie Dropbox verwenden, müssen Sie dl.dropboxusercontent.com anstelle von dropbox.com für Ihre Datei-URL verwenden!). Anschließend können Sie Ihre URL in einem HTML-Skript-Tag verwenden, um Ihren Javascript-Code zu laden.


Nicht bearbeiten, Hook!
Haben Sie keine Lust, Javascript-Code manuell zu bearbeiten und erneut hochzuladen, nur um sich darum kümmern zu müssen, ihn wieder in das Spiel einzufügen? Dann können Sie einfach die Javascript-Funktionen einbinden! Was ist also das Einbinden von Javascript-Funktionen? Lassen Sie mich zunächst die Grundlagen von Javascript-Bereichen erläutern. Auf den globalen Bereich kann jeder Code zugreifen, und Sie können das Fensterobjekt verwenden, um direkt darauf zu verweisen. Lokale Bereiche sind Funktionsbereiche und enthalten in der Funktion definierte Variablen. Auf lokale Bereiche kann nicht durch Code zugegriffen werden, der sich nicht im Bereich befindet, es sei denn, die Eigenschaft wurde durch Code zugewiesen, der sich im Bereich befindet. Schauen wir uns ein Beispiel an!

JavaScript:
function myFunction(){ // myFunction is defined in the Global Scope.
    let myPrivateArray = []; // myPrivateArray is defined in the Local Scope.
    myPrivateArray.push("Secret Value LOL");
    console.log(myPrivateArray); // Logs : ["Secret Value LOL"]
}

myFunction(); // Runs the function.

console.log(myPrivateArray); // myPrivateArray is undefined and throws an error.
Ok, hier können wir sehen, dass wir eine lokale Variable haben myPrivateArray. Stellen wir uns vor, dass es sich um einen Spielcode handelt, auf den wir zugreifen möchten. Leider können wir das nicht, ohne den Code direkt zu bearbeiten ... oder doch? Hier kommen Hooks ins Spiel. Das Grundkonzept besteht darin, dass Sie eine globale Funktion einbinden, der eine lokale Variable übergeben wird, auf die Sie zugreifen möchten. In diesem Fall Array.prototype.push und console.log sind beides globale Funktionen, die wir einbinden können. Schauen wir uns also einen Haken an.

JavaScript:
// Make an Array.prototype.push hook!
const oldArrayPush = Array.prototype.push; // Grab original function
Array.prototype.push = function(){ // Redefine the function
    if (arguments[0] == "Secret Value LOL"){ // arguments is an array with arguments passed to the function!
        arguments[0] = "Hooked the array push!"; // Edit the argument
    }
    oldArrayPush.apply(this, arguments); // Use .apply to continue as normal

}

// Make a console.log hook!
const oldConsoleLog = console.log;
console.log = function(){
    if ( Array.isArray(arguments[0]) ){ // Check if argument is array
        arguments[0].push("Modified the array with a hooked console.log!"); // Modify argument!
    }
    oldConsoleLog.apply(this, arguments)
}
Und schauen wir uns die Ausgabe des Originalcodes an, dann die Ausgabe, nachdem wir den Haken haben.

JavaScript:
// Output of myFunction() before hook :
-> ["Secret Value LOL"]

// Output of myFunction() after hook :
-> (2) ["Hooked the array push!", "Modified the array with a hooked console.log!"]
Ok, wir haben also Variablen in einem lokalen Bereich eingebunden und geändert, auf den wir keinen Zugriff hatten! Beim Hacken von Spielen in der realen Welt müssen Sie sorgfältig nach guten Hooks suchen. Denken Sie daran, dass Sie ALLE globalen Funktionen einbinden können, nicht nur die Standard-Browser-API-Aufrufe. Halten Sie Ausschau nach Array-Modifikatoren, da diese nicht nur die in den Argumenten dargestellte Variable offenlegen können, sondern Sie mit dem auch das gesamte Array erfassen und ändern können this Schlüsselwort (Objektmodifikatoren können ebenfalls nützlich sein, obwohl sie seltener sind).

Denken Sie daran, dass es schwierig sein kann, Hooks zu finden und mühsamer ist als das Umschreiben von Code. Sie müssen sich jedoch keine Gedanken über die Aktualisierung des geänderten Client-Codes oder das Hochladen des Codes machen. Sie können es auch einfach in ein Tampermonkey-Skript einfügen und es sollte wie ein Zauber funktionieren.


Eine kurze Anmerkung zum Debuggen von JavaScript
Wenn es Ihnen schwerfällt, Javascript zu debuggen, schauen Sie sich an, wie das Spiel Eingaben erhält. Es ist ein ziemlich standardisierter Prozess und Sie sollten ihn ziemlich schnell finden können. Eine andere Sache, die Sie tun können, ist Hook Array.prototype.push und hoffen, dass ein gewünschter Wert in ein Array verschoben wird. Sie können auch versuchen, herauszufinden, welche Rendering-Engine das Spiel verwendet, und herauszufinden, wann das Spiel Rendering-Funktionen aufruft. Sie können damit beispielsweise herausfinden, wann das Spiel einen Spieler rendert. Chrome DevTools eignet sich hervorragend zum Debuggen von Javascript und bietet Ihnen einen guten Zugriff auf die Aufrufliste und den Zugriff auf den Bereich, in dem der Code aufgerufen wurde.

WASM und warum es mich zum Weinen bringt
WASM steht für Web Assembly und wird leider von einigen Browserspielen verwendet. Warte einen Moment, das hört sich großartig an, lass mich die Cheat-Engine und Ida Pro rausholen und los geht's! Naja, verdammt, ich wünschte, es wäre so einfach. WASM ist keine Assembly und bringt alle Speichermodifikationsprobleme mit sich, die JavaScript hat (obwohl es einfacher ist, in der Cheat-Engine nach Werten zu suchen, aber Zeiger nutzlos sind). WASM verfügt über die gesamte nicht für Menschen lesbare Lesbarkeit der regulären Assembly, aber irgendwie verwirrt es mich noch mehr, obwohl es so aussieht, als ob es einfacher zu lesen sein sollte. Um ehrlich zu sein, weiß ich nicht wirklich, wie man in WASM programmiert, aber selbst wenn ich es wüsste, würde es keinen großen Unterschied machen, da die meisten WASM-Spiele die Spiel-Engine im WASM-Code enthalten, was bedeutet, dass der Code vorhanden sein kann 11 Millionen Zeilen (für ein Unity-basiertes Spiel, mit dem ich gespielt habe).

WASM ist weitaus schlechter zu hacken als Javascript oder sogar reguläre Assembler-kompilierte Spiele. Dafür gibt es drei Gründe: 3. Es ist wirklich schwer zu lesen, 1. Die Speicheradressen ändern sich / es gibt keine Zeiger und 2. Es gibt kaum oder gar keine Debugging-Tools. Das macht es extrem schwierig, mit 3 Millionen Codezeilen konfrontiert zu werden.

Zum Glück gibt es einen Retter, Cetus. Cetus ist eine SEHR abgespeckte Version der Cheat-Engine für Wasm. Es läuft im Browser als Google Chrome-Erweiterung. Es ermöglicht Ihnen, den Speicher aller im Browser ausgeführten WASM-Programme zu durchsuchen. Sie können Werte umschreiben, Werte „sperren“, herausfinden, was liest/schreibt, und Code patchen. Cetus verfügt auch über eine Art Speed-Hack, der bei vielen Spielen funktionieren kann. Sobald Sie den Code gefunden haben, der mit Cetus einen Wert ändert, können Sie ihn bearbeiten und einen Patch erstellen. Bei der nächsten Aktualisierung wird der Patch angewendet und der ausgeführte Code geändert.

Es treten Probleme auf, wenn Sie die Verwendung von Cetus zum Laden von Codeänderungen überspringen möchten (Cetus hat dazu geführt, dass ein Spiel langsamer wurde, dies kann jedoch auf einen Fehler zurückzuführen sein). Das Problem besteht aus zwei Gründen: Erstens besteht das Finden des richtigen Codes zum Ändern und zweitens darin, den ursprünglichen Wasm zu ersetzen. Der in Cetus angezeigte Code ist eigentlich nicht WASM (wasm ist binär, kein Text), sondern WAST (wast ist eine Textversion von wasm). Das Problem besteht darin, dass einige Wasm-to-Wast-Programme den Wasm anders interpretieren und Variablen usw. umbenennen können, um Ihnen zu helfen, was das Auffinden des genauen Codes erschweren kann. Cetus gibt eine Funktionszahl an, die in allen Verschwendungen gleich sein sollte, obwohl ich gesehen habe, dass Cetus um etwa 2-3 Zahlen höher abweicht als die, die ich in der Verschwendung gefunden habe, aber das sollte Ihnen trotzdem erheblich helfen. Ein weiteres Problem bei der manuellen Bearbeitung von Abfällen besteht darin, dass die Dateien so groß sind. Die meisten Texteditoren haben erhebliche Probleme und einige lassen sich nicht öffnen (ich habe VSCode verwendet). Das Kompilieren von Wast zu Wasm kann ebenfalls ein Problem sein. Sobald Sie den Wast geändert und wieder in Wasm umgewandelt haben, müssen Sie ihn hochladen, damit Ihr Spiel ihn herunterladen und ausführen kann. Das Problem ist, dass Sie jetzt etwas Javascript-Hacking durchführen müssen, damit der Javascript-Wasm-Loader Ihren Wasm-Code lädt.

Anti-Cheat in Browsergames
Die größte Form von Anti-Cheat-In-Browser-Spielen besteht darin, dem Client überhaupt nicht zu vertrauen und eine Vollversion des Spieleservers auszuführen, um alles zu überprüfen, was der Client tut.
Es ist nervig, aber Aimbot ist immer noch ein Hack für Multiplayer-Browserspiele.
Alle anderen Hacks werden entweder visuelle (insbesondere) oder sorgfältig geprüfte Exploits sein.

Leider gibt es bei Javascript-Spielen eine andere Technik, die sogenannte Verschleierung. Wenn es richtig gemacht wird, kann es ziemlich effektiv sein, aber wenn Sie ein wenig Zeit damit verbringen, herauszufinden, welche Funktionen fällig sind, und dem Aufrufstapel folgen, können Sie immer noch eine gute Vorstellung davon bekommen, was der Code tut. Ich empfehle auch fehlen uns die Worte. Es handelt sich um eine Website, auf der ein Projekt namens de4js läuft, das versucht, Javascript zu entschlüsseln. Es kann ziemlich gute Arbeit leisten, und das sollte Ihre erste Anlaufstelle sein, wenn Sie auf verschleiertes Javascript stoßen.
Code wird ebenfalls minimiert. Wenn der Code nur minimiert wird, hilft ein einfacher js-beautifier dabei, den Code zu bereinigen. Der Codeverschönerer von Google Chrome leistet gute Arbeit.

Eine weitere Anti-Cheat-Methode, die ich behandeln werde, sind Spiele, die das verwenden .toString() Methode, um zu prüfen, ob eine Funktion geändert wurde (insbesondere um zu prüfen, ob eine Funktion eingebunden wurde). Sie können diese manuelle Einstellung umgehen .toString() zum Original .toString().

Wenn Sie sich fortgeschrittenere Anti-Cheat-Methoden ansehen möchten, empfehle ich Ihnen, einen Blick darauf zu werfen diese Github-Seite behandelt den Spiel-Krunker und die von ihnen verwendeten Anti-Cheat-Methoden (Schließlich hat das Spiel sein gesamtes Spiel auf WASM umgestellt, was, wie oben erwähnt, sehr schwierig rückgängig zu machen ist). Krunker ist der fortschrittlichste Anti-Cheat, den ich je gesehen habe, und entspricht nicht dem Standard, und seit das Spiel aktualisiert wurde, habe ich nicht genug persönliche Erfahrung, um sie sicher zu behandeln. Mir wäre es viel lieber, wenn Sie diese Github-Seite besuchen oder nach den Anti-Cheat-Methoden von Krunker googeln.


Okay, das war's, das war's mit dieser Anleitung zum Hacken von Browserspielen. Wenn dich etwas verwirrt hat ... GOOGLE ES! Viele der Dinge, über die ich gesprochen habe, können Sie googeln und Hilfe finden. Ich weiß, dass es hier wahrscheinlich nicht viele Leute gibt, die daran interessiert sind, Browsergames zu hacken, aber wenn es mir Tausende von Aufrufen auf yt verschaffen kann, dachte ich, dass es vielleicht jemanden interessieren würde. Es gibt noch andere Dinge, die Sie im Voraus tun können, und ich empfehle wirklich, Krunkers Anti-Cheat-Artikel zu lesen, da er von Leuten geschrieben wurde, die wirklich hart arbeiten mussten, um Anti-Cheat zu umgehen und gute Möglichkeiten zum Einfügen und Bearbeiten von Code zu finden. Wenn Ihr Spiel in WASM ist und Sie versuchen, einen Goalbot zu erstellen, wird es für Sie leider schwierig sein. An diesem Punkt empfehle ich Ihnen, sich die traditionelleren Methoden zum Hacken von Spielen anzusehen und zu versuchen, die Werte der Spieler im zu finden Cheat-Engine, dann finden Sie den Lese-/Schreibcode mit Cetus. Denken Sie daran, dass Sie diese Variablen wahrscheinlich abfangen und in Javascript exportieren möchten, um herkömmliche Aimbot-Codes/Berechnungen durchzuführen.
 
Top