hwasan / asan详细分析踩内存之二:Heap buffer overflow

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

上一篇我们讲了:hwasan / asan详细分析踩内存之Use after free

        今天我们讲解Heap buffer overflow,堆溢出是指程序在动态分配内存时,分配的内存超出了堆的大小。 堆是一种先进先出(FIFO)的数据结构,用于存储程序运行时长期需要的数据。 当堆溢出时,程序可能不会立即停止执行,但会导致程序的不稳定,甚至崩溃。 在恶意攻击中,攻击者可能会利用堆缓冲区溢出来执行任意代码或获取敏感信息。

        直接上例子:

// RUN: g++ heap_buffer_overflow.cc -o heap_buffer_overflow -ggdb -fsanitize=address
int main(int argc, char **argv) {
  int *array = new int[100];//对应400个字节=100*4
  array[0] = 0;
  int res = array[argc + 100];  // BOOM  delete [] array;
  return res;
}

Heap buffer overflow表示堆内存溢出,使用0xfa和0xfb表示堆的左右边界。如果对应内存为0xfa或者0xfb表示可能是堆溢出。 

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

int main(int argc, char **argv) {

  int *array = new int[100

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