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.
For example:
Let's say for example a game has a function called
Code:
void KilledBy(char* PlayerName)
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.
If you're talking about our XC version or to AVA be specific then undetected hooks are the following iirc:
VMT hook
Shadow VMT hook
Mid-function hooking
Detected:
MS Detours