Techniques used to alter or augment the behavior of an operating system, applications or of other software components by intercepting function calls or messages or events passed between software components. Code that handles such intercepted function calls, events or messages is called a hook.