Q:

Is it necessary to understand Linux kernel internals to do binary exploitation?

I am second-year CS student, I know C, OOP concepts, x86 architecture, reverse engineering basics, TCP/IP stack and OS concepts, also I love Linux OS.
I have just one question:
Is it a mandatory to learn in depth a Linux kernel and develop some low-level stuff like kernel drivers before I dive into a binary exploitation in ARM? I'm not a total newbie, I've developed some very basic exploits for x86 arch, but I want to build a carrier in ARM exploitation.
Can I learn it AFTER the ARM binary exploitation and get my first job when I'm really good at binary exploitation without knowing a Linux kernel in REAL depth

A:

Binary exploitation does not require you understand the Linux kernel in depth, unless you are exploiting the kernel itself. You only need to know the basics such as how signal handlers are registered, how syscalls work, and how Linux manages process-specific attributes that can be relevant to exploitation. A solid understanding of Linux is very useful, but this does not mean that you need to understand Linux kernel internals, however. You don't need to grok the kernel's internal API to exploit userspace binaries.
Understanding Linux in general is quite useful though, assuming your exploitation is being done under Linux. For example, understanding SROP (SigReturn-Oriented Programming) exploitation, a ROP-like attack that bypasses NX protections, requires knowing how the sigreturn() syscall works. Likewise an exploit might attack the vDSO, a shared library that the kernel provides to all processes.

