Fuzzer (n.): A tool or application that attempts all, or a wide range of,
 unexpected input values to a system. The purpose of a fuzzer is to
 determine whether a bug exists in the system, which could later be
 exploited without having to fully know the target system’s internal
 functioning. 

Untitled

Memory Management

Untitled

Program execution Cycle

  1. First, the operating system creates an address space in which the program will run
  2. This address space includes the actual program instructions as well as any required data
  3. information is loaded from the program’s executable file to the newly created address space

There are three types of segments: .text, .bss, and .data. The .text segment is mapped as read-only, whereas .data and .bss are writable. The .bss and .data segments are reserved for global variables. The .data segment contains static initialized data, and the .bss segment contains uninitialized data. The final segment, .text, holds the program instructions

Untitled

Stack Vs. Heap

The Stack

  1. The stack is a data structure, more specifically a Last In First Out (LIFO) data structure
  2. The stack stores local variables, information relating to function calls
  3. the stack is that it grows down the address space: as more data is added to the stack, it is added at increasingly lower address values

Untitled

The Heap

  1. The heap is another data structure used to hold program information, more specifically, dynamic variables
  2. The heap is (roughly) a First In First Out (FIFO)