代码行澄清

时间:2016-09-15 14:50:22

标签: c arrays pointers memory stack

我正在读一本关于缓冲区溢出和shellcode的书,在本书中有以下代码。

除了buffer = command +strlen(command);的目的之外,我理解其中的大部分内容。

当我在缓冲区上使用memset()时,它会覆盖我之前使用command+strlen(command)存储的内容吗? 有人可以为我澄清一下吗?

code

1 个答案:

答案 0 :(得分:3)

+的一个操作数是指针时,C会执行指针算术。

结果或pointer + number是一个指针值,指向索引为number的值。它相当于&pointer[number]

所以,在这种情况下:

buffer = command + strlen(command);

相当于

buffer = &command[strlen(command)];

因此buffer将指向command中的字符串终止符,如果您想将某些内容连接到command字符串,那么它就是正确的位置。