Managed Code Rootkits: Hooking into Runtime Environments