Funções JavaScript podem ser conectadas; gancho é um método para modificar dinamicamente o processo de execução de uma função ou retornar resultados. JavaScript, como uma linguagem dinâmica, também pode executar operações de gancho. parâmetros ou variáveis.
O ambiente operacional deste tutorial: sistema Windows 10, JavaScript versão 1.8.5, computador Dell G3.
Pode.
Hook é um método que modifica dinamicamente o processo de execução ou retorna resultados de uma função e é muito utilizado em aplicações práticas. Por ser uma linguagem dinâmica, o Javascript também pode realizar operações Hook. Com o desenvolvimento da linguagem Javascript, existem cada vez mais métodos Hook.
A tradução literal de gancho significa gancho. No campo da engenharia reversa, geralmente é usado para escutar, imprimir saída, substituir e outras operações para determinados parâmetros e variáveis.
Os exemplos são os seguintes:
Código de amostra
função adicionar(a,b){retornar a + b}código de gancho
Esta é uma função de adição muito simples. Os valores desses dois parâmetros podem ser obtidos através do Hook, o que equivale a adicionar um código console.log(a,b) antes do retorno, para que os valores destes sejam obtidos. dois podem ser gerados para análise. Então você pode usar o seguinte método para substituir a função, e este método é o modo decorador em JavaScript
let _add = addadd = function () { console.log('argumentos', argumentos) let resultado = _add.apply(this, argumentos) console.log('result', resultado) return resultado // Se o resultado não for necessário, então retorne diretamente _add()}Código completo
função add(a, b) { return a + b} let _add = addadd = function () { console.log('argumentos', argumentos) let result = _add.apply(this, argumentos) console.log('resultado' , resultado) retornar resultado } add(1, 2)Chamar add(1,2) novamente produzirá os parâmetros dos argumentos e o resultado 3. Um HOOK muito simples é implementado.
No entanto, este exemplo pode ser muito simples. O que quero expressar é que através do Hook podemos localizar a função e a variável que queremos conectar ao Hook, e através de uma série de operações (cópia de função, metaprogramação), desde que a função seja. acionado ou usado (valor, modificação), podemos obter os resultados desejados (os resultados antes e depois (como antes da criptografia, depois da criptografia)). Este é o nosso propósito.
O exemplo dado no livro pretende ilustrar que você deseja adicionar algumas funções a uma determinada função original (como add aqui), mas a função original pode ser escrita por outros desenvolvedores, portanto, modificar diretamente a própria função original pode levar a BUG desconhecido, então você pode usar o método acima para copiar a função original sem destruir a função original.