JavaScript 関数はフックすることができます。フックは、関数の実行プロセスを動的に変更したり、結果を返したりするためのメソッドであり、フックは通常、出力のリッスンや出力などに使用されます。パラメータまたは変数の置換およびその他の操作。
このチュートリアルの動作環境: Windows 10 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。
できる。
フックは、関数の実行プロセスを動的に変更したり、関数の結果を返したりするメソッドであり、実用的なアプリケーションで非常に広く使用されています。動的言語として、JavaScript はフック操作も実行できます。 Javascript 言語の発展に伴い、Hook メソッドがますます増えています。
フックの直訳はフックを意味し、リバース エンジニアリングの分野では、通常、特定のパラメーターや変数のリッスン、出力、置換などの操作に使用されます。
例は次のとおりです。
サンプルコード
関数 add(a,b){return a + b}フックコード
これは非常に単純な加算関数であり、これら 2 つのパラメータの値はフックを通じて取得できます。これは、戻る前にコード console.log(a,b) を追加するのと同じです。分析用に 2 つを出力できます。次に、次のメソッドを使用して関数を上書きできます。このメソッドは JavaScript のデコレータ モードです。
let _add = addadd = function () { console.log('arguments', argument) let result = _add.apply(this, argument) console.log('result', result) return result // 結果が必要ない場合は、その後、直接 _add() を返します}完全なコード
function add(a, b) { return a + b} let _add = addadd = function () { console.log('arguments', argument) let result = _add.apply(this, argument) console.log('result' , result) 結果を返す } add(1, 2)add(1,2) を再度呼び出すと、引数パラメータと結果 3 が出力されます。非常に単純な HOOK が実装されています。
ただし、この例は単純すぎるかもしれません。私が表現したいのは、関数が存在する限り、フックする関数と変数を一連の操作 (関数のコピー、メタプログラミング) を通じて見つけることができるということです。トリガーまたは使用 (値、変更) すると、必要な結果 (前後の結果 (暗号化前、暗号化後など)) を取得できます。これが私たちの目的です。
この本で挙げられている例は、特定の元の関数にいくつかの関数を追加することを説明することを目的としています (add here など) が、元の関数は他の開発者によって記述されている可能性があるため、元の関数自体を直接変更すると、次のような問題が発生する可能性があります。不明なバグがあるため、上記の方法を使用して、元の関数を破壊せずに元の関数をコピーできます。