title: What's inside the stack?
body: <p>If I run a program, just like</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  int main(int argc, char *argv[], char *env[]) {
    printf("My references are at %p, %p, %p\n", &amp;argc, &amp;argv, &amp;env);
  }
  </code></pre>
  
  <p>We can see that those regions are actually in the stack.
  But what else is there? If we ran a loop through all the values in Linux 3.5.3 (for example, until segfault) we can see some weird numbers, and kind of two regions, separated by a bunch of zeros, maybe to try to prevent overwriting the environment variables accidentally.</p>
  
  <p>Anyway, in the first region there must be a lot of numbers, such as all the frames for each function call.</p>
  
  <p>How could we distinguish the end of each frame, where the parameters are, where the canary if the compiler added one, return address, CPU status and such?</p>