Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is the NTOSKRNL.exe IMAGE_MACHINETYPE header field set to x86 on only certain editions of Windows 7 x64?

I am using windows 7 home premium x64. I was wondering why exactly the IMAGE_MACHINETYPE field in the header of ntoskrnl in my system32 directory specifies x86. IDA will even let me disassemble it as native x86.

Yet on my windows 7 pro machine, image_machinetype is x64. Am I just missing something.. or why is ntoskrnl 32 bit on a 64 bit OS?

like image 832
Nick Avatar asked Sep 17 '11 19:09

Nick


People also ask

Is ntoskrnl.exe necessary?

ntoskrnl.exe is a fundamental part of Windows that needs to exist for the Windows OS to function at all. This important part of Windows provides the kernel and executive layers of the Microsoft Windows NT kernel space.

What does the ntoskrnl.exe do?

In computing ntoskrnl.exe (short for Windows NT operating system kernel executable), also known as kernel image, provides the kernel and executive layers of the Microsoft Windows NT kernel space, and is responsible for various system services such as hardware abstraction, process and memory management, thus making it a ...


1 Answers

My guess is on x64 architecture with a BIOS boot ntoskrnl.exe's main() entry point is called before the switch to long mode (64bit). Thus it would be an x86 application in so far as its entry point, but the remainder of the kernel image in the exe would be 64bit.

like image 62
Jeremiah Gowdy Avatar answered Oct 13 '22 05:10

Jeremiah Gowdy