In the buffer overflow, we hijack the execution flow and redirect to a CPU register that contains part of our buffer and the instructions in that buffer will be executed. But, if the buffer size is very small we can't inject any payload. So we can't exploit the vulnerability. In such cases, we have to check two possible options. First check if the location of the buffer, before overwriting the EIP register, is located in the memory. The other option is a buffer segment in a different region of the memory and nearby so that we can jump to the offset.
An egg hunter is created with a set of instructions that are translated to opcode. So, the egg hunters can be used to search the entire memory range, including the stack and heap, for the final stage shell code and redirect the execution flow to the shell code.
Egg hunters include a user-defined four-byte tag...