所以我正在反转一个 ELF 二进制文件,现在根据我对 C 的了解,main 函数有两个参数,argc 和 argv
但是当我反编译它们时,我正在逆向的一些 linux 二进制文件有 3 个!一个 int 和另外两个是 char**,我假设第二个是 argv 但最后一个是什么?
一个例子是 CTF 的二进制文件:
所以我正在反转一个 ELF 二进制文件,现在根据我对 C 的了解,main 函数有两个参数,argc 和 argv
但是当我反编译它们时,我正在逆向的一些 linux 二进制文件有 3 个!一个 int 和另外两个是 char**,我假设第二个是 argv 但最后一个是什么?
一个例子是 CTF 的二进制文件:
第三个是该程序有权访问的环境变量数组。如果您阅读execve的文档,它的内容如下:
被调用程序的主函数可以访问参数向量和环境,当它定义为:
int main(int argc, char *argv[], char *envp[])
但是请注意,POSIX.1 中没有指定使用 main 函数的第三个参数;根据 POSIX.1,应通过外部变量environ(7) 访问环境。