Dynamic Integrity Verification for Software Self-defense