Skip to content

Memory Protection

Bennett Blodinger edited this page Mar 18, 2017 · 1 revision

Memory is separated by pages. Programs typically use a page size of 4096 bytes (but don't rely on this).

Each page has a memory protection, which are three independent attributes that are either enabled or disabled: read, write, and execute.

If a page is not readable, that means one can't read from it. If it is not writable, one can't write data into it. Lastly, if a page isn't executable, the program can't execute code from it.

The way around this, if one wants to write data into a non-writable page for example, is to change the memory protection on the page. This can be done manually or through scripting.

To do this manually:

  1. Have a search window, the Memory Viewer, or Debugger window open
  2. Optionally select what contents in the window whose protection to change
  3. Change or view the current protection by going to Memory -> Change Memory Protection - this will round to the nearest virtual memory page