我正在读一本关于缓冲区溢出和 shellcode 的书,书中有下面的代码。
我理解其中的大部分内容,除了 buffer = command +strlen(command);
的目的。
当我在缓冲区上使用 memset()
时,它不会覆盖我之前使用 command+strlen(command)
存储的内容吗?
有人可以帮我解释一下吗?
最佳答案
当+
的操作数之一是指针时,C 会进行指针算术。
结果或指针+数字
是一个指针值,指向索引为数字
的值。它相当于&pointer[number]
。
所以,在这种情况下:
buffer = command + strlen(command);
相当于
buffer = &command[strlen(command)];
因此,buffer
将指向command
中的字符串终止符,如果您想将某些内容连接到command
,这正是正确的位置字符串。
关于c - 代码行澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39514162/