The answers for the SEC670 Prep Quiz are listed below. For more details about the course and the quiz, please click here.

Q1 – What user-mode structure has a field that maintains a doubly linked list of loaded modules?

A – the Thread Environment Block (TEB)

B – the Processor Control Block (PCB)

C – the Process Environment Block (PEB)

D – the EPROCESS structure

Q2 – For x64 systems, what segment register and offset will provide a pointer to the PEB?

A – the gs segment register and offset 60

B – the gs segment register and offset 0x60

C – the fs segment register and offset 0x30

D – the fs segment register and offset 30

Q3 – What shared data structure is located at the same virtual address for nearly every single process?

A – the Process Environment Block (PEB)

B – the Thread Environment Block (TEB)

C – the Processor Control Block (PCB)

D – KUSER_SHARED_DATA will be present in nearly every single process

Q4 – At what virtual address could you find the KUSER_SHARED_DATA structure?

A – virtual address 0x7FFE0000

B – virtual address 0xFFFF8000

C – virtual address 0x00000000

D – virtual address 0xDEADBEEF

Q5 – What KUSER_SHARED_DATA field is used to indicate if kernel debugging has been enabled?

A – KdDebuggerEnabled

B – IsBeingDebugged

C – DebuggerAttached

D – IsNotBeingDebugged

Q6 – What process enumeration API only returns a list of PIDs?

A – EnumModules

B – EnumThreads

C – CreateToolhelp32Snapshot

D – EnumProcesses

Q7 – For 64-bit systems, why is there a 32-bit and a 64-bit version of NTDLL.DLL present in Wow64 processes?

A – The system called LoadLirbary twice

B – Because 32-bit system calls aren’t implemented

C – It helps performance

D – It aids in process creation

A more detailed answer: Windows 32-bit on Windows 64-bit (Wow64) is a Windows subsystem that emulates 32-bit programs on 64-bit systems. This is done for backwards compatibility so that 32-bit programs can still work on 64-bit systems. Since a 64-bit system only supports 64-bit system calls, a transition must take place that leaves the 32-bit version of NTDLL.DLL and effectively jumps over to the 64-bit version of NTDLL.DLL where the true system call resides. This transition has been dubbed Heaven’s Gate.

Q8 – What calling convention allows for VARARGS?

A – __cdecl

B – __fastcall

C – __thiscall

D – __stdcall

Q9 – For 32-bit Windows APIs, what is the purpose of the MOV EDI, EDI instruction?

A – it simply zeros out the top 32 bits of the register

B – it moves the contents of EDI into EDI

C – it changes control flow by modifying EFLAGS

D – it is a glorified 2-byte NOP instruction that allows for hotpatching functions

Q10 – Where are user-mode handles stored once the kernel has created the requested object?

A – in a local variable

B – in a global variable

C – in the calling process’ handle table

D – in a doubly linked list