Hooking as general is replacing the original code of a program to another to either provide a different behavior or view something that is going on it. Hooking wasn't originally made for abusing. However, in hacking terms it's made for abusing.
Let's say for example a game has a function called
We want to redirect it to our function, what should we do? Simply, hooking it. So rather than printing the real player name who killed you, it will print or do whatever you want.
void KilledBy(char* PlayerName)
If you're talking about our XC version or to AVA be specific then undetected hooks are the following iirc:
Shadow VMT hook