假设我们有program1:
int main(void) {
char *env[2];
env[0] = "PATH=/";
env[1] = NULL;
execve("/program2", NULL, env);
exit(0);
}
我们还有program2:
int main(void) {
exit(0);
}
调试它,PATH在执行的新进程(program2)中实际上没有被修改。
答案 0 :(得分:0)
调试它,在新进程中实际上没有修改PATH (program2)被执行。
事实并非如此。请注意,p environ
不起作用,而从x 0x8049650
获得的environ@@GLIBC_2.0
(地址info var environ
)确实有效:
(gdb) p environ $1 = (char **) 0x0 (gdb) p/x &environ $2 = 0xf7fbfd44 (gdb) x 0x8049650 0x8049650 : 0xffffdf18 (gdb) x/s **0x8049650 0xffffdfe8: "PATH=/"