hwasan / asan详细分析踩内存之三:Stack buffer overflow

关注我,后续持续新增专题博文,谢谢!!!

上一篇我们讲解了:hwasan / asan详细分析踩内存之Heap buffer overflow

        今天我们讲解Stack buffer overflow:栈缓冲区溢出(stack buffer overflow或stack buffer overrun)是计算机程序把数据写入调用栈上的内存时超出了数据结构的边界。 栈缓冲区溢出是缓冲区溢出的一种。 这会损坏相邻数据的值,引发程序崩溃或者修改了函数返回地址从而导致执行恶意的程序。

        直接上例子:

// RUN: g++ stack_buffer_overflow.cc -o stack_buffer_overflow -ggdb -fsanitize=address
int main(int argc, char **argv) {
  int stack_array[100];
  stack_array[1] = 0;
  return stack_array[argc + 100];  // BOOM
}

Stack buffer overflow表示栈的访问超出边界,通过0xf1/0xf3/0xf4来判定。如果访问到0xf1/0xf3/0xf4则表示有可能超出栈边界的访问

// RUN: g++ stack_buffer_overflow.cc -o stack_buffer_overflow -ggdb -fsanitize=address

你可能感兴趣的:(hwasan踩内存专题,算法,开发语言,相机,android)