[2] Tampering can be malicious, to gain control over some aspect of the software with an unauthorized modification that alters the computer program code and behaviour.
Internal anti-tampering is used to turn an application into its own security system and is generally done with specific code within the software that will detect tampering as it happens.
This type of tamper proofing defense may take the form of runtime integrity checks such as cyclic redundancy checksums,[4] anti-debugging measures, encryption or obfuscation.
[5] Execution inside a virtual machine has become a common anti-tamper method used in recent years for commercial software; it is used for example in StarForce and SecuROM.
[7] A more recent research trend is tamper-tolerant software, which aims to correct the effects of tampering and allow the program to continue as if unmodified.