2-2命令行参数与环境表

命令行参数与环境表

查看可执行文件所依赖的动态库,函数

使用 ldd命令即可查看

使用nm命令查看elf中的函数以及变量的虚拟内存地址

程序存储空间布局

程序开始运行时的地址

readelf 命令和nm命令可以查看

命令行参数

所有的命令行参数都在一个数组中

c语言中获取命令行参数,默认第一个参数是当前脚本的文件名

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
##include <stdio.h>
##include <stdlib.h>

int main(int argc,char *argv[])
{
  printf("%d\n",argc);
  printf("%s\n",argv[0]);
  printf("%s\n",argv[1]);
  exit(0);
}

php中获取命令行参数,直接使用 argc,argc ,argc,argv变量,也可以使用 $GLOBALS / $_SERVER变量查看

1
2
3
<?php
var_dump($argc);
var_dump($argv);

strace 追踪,发现都是通过 execve 函数传递过去

环境参数

是execve中传递的第三个参数,也就是当前程序运行时获取到当前系统的所有环境变量及当前shell的临时变量等信息

PHP获取当前环境方法 getenv()