>>9507This assumes a working knowledge of x86_64, C, C++ (a little just what a vtable is) and ARM if you ever want to get into embedded or iphone/android hacking. Most people suck ass at C these days even though they say they 'know C' so if you don't understand what struct packing is you don't know C well enough.
You also need a thorough understanding of how a computer executes a program - so that would be syscalls, virtual memory, binary formats and dynamic loaders. From there you should begin to learn about operating systems - basically pick an open source one (bsd, xnu, linux) and stare at it for a really long time.