Can VMP protect memory from reading?

I have some global variables stored in heap? Does VMP have certain API which can protect these memory from reading by OD directly?

Look at NtReadVirtualMemory. For more secure you can call this API directly with SYSCALL/SYSENTER.