En el tutorial que encontraste y
aquí está explicado con todo detalle como realizar el Hook, como volver del Hook, como deshacer el Hook, como llamar a la API original y como evitar machacar instrucciones asm cuando dos API no tienen el mismo punto de entrada, usando un desensamblador de longitud en el mismo código que realiza el Hook. Debes leerlo despacio y estudiar los esquemas del hook de ejemplo. El ejemplo es funcionante y trasladable para cualquier API en modo usuario sin más cambios que declarar la API, su sustituta y encontrar los puntero a ambas.
El código está escrito en delphi pero no hay dificultad para pasarlo a C, ya que solo usa API. En este punto te puedo echar una mano ti se atascas.
Saludos.