You dont need detours to hook a function with the method you mentioned.
Just set the page flag PAGE_GUARD and let it raise an exception. Catch this exception with an exceptionhandler and use EIP to redirect to any function you want.
Never used it, but I heard it eats alot of frames per second when you hook a function called every frame. Some say its slow, some say its acceptable.