However the basic OpenPAT process has the drawback of being unsuitable for instrumenting some special programs such as viruses, which can include self-modifying code, and the process requires external libraries to be explicitly instrumented if they are to be analyzed at a fine grained level (note however that OpenPAT does track external interactions at a course grained level without explicit library instrumentation).