Pessoal, abaixo está um breve tutorial de como fazer unhook em api e qual a necessidade de faze-lo, lembrando que caso queira algo mais profundo em relação a programação, não deixe de adquirir o MELHOR CURSO DE CRIAÇÃO DE CHEATS, que está na minha bio ou apertando aqui.
Fazer um unhook de API significa remover um gancho (hook) que foi colocado em uma função de API do Windows para interceptar chamadas. Isso pode ser necessário, por exemplo, para desfazer modificações feitas por softwares de terceiros que alteram o comportamento de funções do sistema.
🔹 Como funciona um Hook de API?
Um hook é basicamente uma modificação no código de uma função de API para que, ao ser chamada, ela execute um código alternativo antes ou depois (ou substitua completamente o comportamento original). Isso pode ser feito alterando a tabela de importação (IAT Hooking), substituindo bytes no código da função (Inline Hooking) ou usando técnicas mais avançadas como detours.
🔹 Como desfazer um Hook (Unhook)?
O processo de unhook consiste em restaurar a função ao seu estado original, geralmente sobrescrevendo as instruções alteradas pelo hook com as instruções originais da função.
🟢 Unhook de API em Delphi
Aqui está um exemplo de unhooking de uma função da API no Delphi. Vamos considerar que a função MessageBoxW foi hookada e queremos restaurá-la.
Passos:
Obter o endereço original da função.
Comparar os primeiros bytes da função com os esperados.
Restaurar os bytes originais caso tenham sido modificados.
✅ Esse código restaura os primeiros 5 bytes da função MessageBoxW no user32.dll.
🟢 Unhook de API em C++
Agora, vamos fazer algo similar em C++.
✅ Esse código também restaura os primeiros bytes da função MessageBoxW.
🛑 Considerações Importantes:
Nem sempre os primeiros bytes são os mesmos. Cada versão do Windows pode ter variações.
Se o hook for por tabela de importação (IAT), você deve restaurar a IAT e não sobrescrever os bytes da função.
Pode ser necessário obter os bytes originais dinamicamente, por exemplo, extraindo de um backup da DLL original.
Se um antivírus estiver protegendo a função hookada, pode ser que o unhook falhe.
Esses métodos são básicos e podem não funcionar em hooks mais avançados.
Se quiser algo mais robusto, pode-se usar ferramentas como Detours ou técnicas de engenharia reversa para extrair os bytes originais dinamicamente.