El archivo empieza con la cabecera MZ (IMAGE_DOS_HEADER), en la misma hay un campo llamado e_lfanew esa es la cantidad de bytes que tenes que "adelantar" para llegar a las cabeceras PE (IMAGE_PE_HEADERS). En las cabeceras PE vas a encontrar el campo AddressOfEntryPoint en OptionalHeader, ese es el offset del punto de entrada. Ademas ahi tenes tambien ImageBase que te sirve para calcular la direccion virtual (sumando estos dos campos). Y eso seria todo