Information leakage and memory disclosures are significant threats to the security of modern operating systems. If an attacker is able to obtain the binary-code of a program, it is then possible to reverse engineer its source code, uncover vulnerabilities, craft exploits, and subsequently patch together code-segments to form code-reuse attacks. These activities are particularly concerning when the program is a device driver or the operating system kernel, since these facilitate privilege-escalation and the ability to persist and hide. While execute-only code is a way to inhibit memory disclosures, the current x86-64 bit virtual memory implementation does not provide the capability to enforce execute only access permissions. The authors present their implementation of ExOShim: a novel, 325-line, lightweight shim hypervisor layer employing Intel's commodity virtualization features that can be dynamically inserted beneath a running kernel to prevent memory disclosures by marking its code execute-only. Unlike alternative approaches that operate only on user level applications, ExOShim utilizes self-protection and hiding techniques that guarantee its integrity even in the event that the attacker is able to gain root-level access. The technology can be combined with fine grained compile- and load-time diversity to mitigate the additional threat of indirect memory disclosures. These concepts have been integrated within an experimental MINIX-like 64-bit microkernel. While the concepts are general and could be applied to other operating systems, their implementation is subtle and requires a detailed understanding of the kernels interaction with its virtual memory layer and consideration at boot -time to load kernel code and kernel data on distinct pages of memory. Early evaluations quantify ExOShim's code size and complexity, run time performance cost, and effectiveness in thwarting information leakage. ExOShim provides complete MULTIC-like execute only protection for kernel code at a runtime- performance overhead of only 0.86% due to the advanced modern caching techniques in the x86 architecture. Overall, this paper contributes the presentation, implementation, and evaluation of a lightweight tool for enforcing execute only access control permissions on kernel code using the virtualization features of the modern x86-64 architecture.