Secure in-VM monitoring using hardware virtualization