我有一個環境變量,我試圖獲取它的內存地址。我有獲取環境變量的地址
memset(&buffer, 0x90, 517);
memcpy(&buffer[517-strlen(shellcode)],shellcode,strlen(shellcode));
setenv("EGG",buffer,1);
putenv(buffer);
printf("EGG address: 0x%1x\n", getenv("EGG"));
system("bash");
它打印出的內存地址是0x804b00c
。這看起來不正確。我用GDB x/x 0x804b00c
進行了檢查。它說不能訪問內存在0x804b00c
。所以getenv
基本上給我垃圾記憶。我已撥打env
以確保EGG
變量已設置,並且是。
爲什麼我無法獲得EGG
的內存地址?
除了你自己,這對任何人來說幾乎是不可能的。變量太多。告訴你的環境變量所處的地址是沒有意義的,它可能在任何地址。 – 2013-02-14 23:08:41
你知道環境變量存儲在你自己的進程中,對吧? – 2013-02-14 23:14:27
爲什麼你需要一個環境變量的地址?你打算如何處理它? – 2013-02-14 23:26:28