Remotely assessing integrity of software applications by monitoring invariants: Present limitations and future directions