A piece of software that runs another software while also having: r/w access to its memory Ability to continue/rewind execution Abilities Record Execution