我正在读一本名为“黑客:剥削的艺术”的书,我遇到了这一段:
使用 execl(),使用现有环境,但如果使用 execle(),则可以指定整个环境。如果环境数组只是作为第一个字符串的 shellcode(使用 NULL 指针终止列表),则唯一的环境变量将是 shellcode。这使得它的地址易于计算。在 Linux 中,地址将为 0xbffffffa,减去环境中 shellcode 的长度,再减去执行程序名称的长度。由于该地址是准确的,因此不需要 NOP 雪橇。
指定环境是什么意思?
什么对不同的环境进行分类?
为什么以这种方式计算环境变量的地址(或者更具体地说,为什么基地址是 0xbffffffa)?
如果我使用 execl() 函数而不是 execle() 可以不使用 shellcode 环境变量吗?