我正在读一本关于缓冲区溢出和shellcode的书,在本书中有以下代码。
除了buffer = command +strlen(command);
的目的之外,我理解其中的大部分内容。
当我在缓冲区上使用memset()
时,它会覆盖我之前使用command+strlen(command)
存储的内容吗?
有人可以为我澄清一下吗?
答案 0 :(得分:3)
当+
的一个操作数是指针时,C会执行指针算术。
结果或pointer + number
是一个指针值,指向索引为number
的值。它相当于&pointer[number]
。
所以,在这种情况下:
buffer = command + strlen(command);
相当于
buffer = &command[strlen(command)];
因此buffer
将指向command
中的字符串终止符,如果您想将某些内容连接到command
字符串,那么它就是正确的位置。