JavaScript-Funktionen können eingehakt werden. Hooks sind eine Methode zum dynamischen Ändern des Ausführungsprozesses einer Funktion oder zum Zurückgeben von Ergebnissen. Als dynamische Sprache können Hooks normalerweise auch zum Abhören, Drucken von Ausgaben usw. verwendet werden Parameter oder Variablen. Ersetzen und andere Operationen.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Dürfen.
Hook ist eine Methode, die den Ausführungsprozess dynamisch ändert oder Ergebnisse einer Funktion zurückgibt und in praktischen Anwendungen sehr häufig verwendet wird. Als dynamische Sprache kann Javascript auch Hook-Operationen ausführen. Mit der Entwicklung der Javascript-Sprache gibt es immer mehr Hook-Methoden.
Die wörtliche Übersetzung von Hook bedeutet Hook. Im Bereich Reverse Engineering wird es normalerweise zum Abhören, Drucken von Ausgaben, Ersetzen und anderen Vorgängen für bestimmte Parameter und Variablen verwendet.
Beispiele sind wie folgt:
Beispielcode
Funktion add(a,b){return a + b}Hook-Code
Dies ist eine sehr einfache Additionsfunktion, die über Hook abgerufen werden kann. Dies entspricht dem Hinzufügen eines Codes console.log(a,b) vor der Rückgabe, sodass die Werte dieser beiden Parameter erhalten werden zwei können zur Analyse ausgegeben werden. Anschließend können Sie die Funktion mit der folgenden Methode überschreiben. Diese Methode ist der Dekoratormodus in JavaScript
let _add = addadd = function () { console.log('arguments', arguments) let result = _add.apply(this, arguments) console.log('result', result) return result // Wenn das Ergebnis nicht erforderlich ist, dann direkt _add()} zurückgebenVollständiger Code
function add(a, b) { return a + b} let _add = addadd = function () { console.log('arguments', arguments) let result = _add.apply(this, arguments) console.log('result' , Ergebnis) Ergebnis zurückgeben } add(1, 2)Ein erneuter Aufruf von add(1,2) gibt die Argumentparameter und das Ergebnis 3 aus. Ein sehr einfacher HOOK ist implementiert.
Dieses Beispiel ist jedoch möglicherweise zu einfach. Was ich zum Ausdruck bringen möchte, ist, dass wir die Funktion und Variable, die wir einhaken möchten, durch eine Reihe von Operationen (Kopieren von Funktionen, Metaprogrammierung) lokalisieren können, solange die Funktion vorhanden ist Ausgelöst oder verwendet (Wert, Änderung), können wir die gewünschten Ergebnisse erhalten (die Ergebnisse vor und nach (z. B. vor der Verschlüsselung, nach der Verschlüsselung)). Das ist unser Ziel.
Das im Buch angegebene Beispiel soll veranschaulichen, dass Sie einer bestimmten Originalfunktion einige Funktionen hinzufügen möchten (z. B. hier hinzufügen), die Originalfunktion jedoch möglicherweise von anderen Entwicklern geschrieben wurde, sodass eine direkte Änderung der Originalfunktion selbst dazu führen kann unbekannter Fehler, sodass Sie die obige Methode verwenden können, um die ursprüngliche Funktion zu kopieren, ohne die ursprüngliche Funktion zu zerstören.