非环境变量 LINES 和 COLUMNS

LINES 和 COLUMNS 是终端的行和列大小,是shell变量,而不是环境变量,因此不会导出到子进程中。

在逆向一个程序时,从动态调试来看getenv是有获取到 COLUMNS 变量并为 114 的值,通过还原的代码执行 getenv 获取 COLUMNS 为空,使用 env 命令查看系统的环境变量,确实没有 COLUMNS 环境变量。

动态调试时:

0x7fffffffe616: "SHELL=/bin/bash"
0x7fffffffe626: "SSH_AUTH_SOCK=/tmp/ssh-k5iirqYPxn/agent.22471"
0x7fffffffe654: "PWD=/home/share/work/ac-code/command/pstree/reverse-64/intel-r4"
0x7fffffffe694: "LOGNAME=xiaozhi"
0x7fffffffe6a4: "XDG_SESSION_TYPE=tty"
0x7fffffffe6b9: "_=/usr/bin/gdb"
0x7fffffffe6c8: "MOTD_SHOWN=pam"
0x7fffffffe6d7: "LINES=41"
0x7fffffffe6e0: "HOME=/home/xiaozhi"
0x7fffffffe6f3: "LANG=en_US.UTF-8"
0x7fffffffe704: "LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;
0x7fffffffece6: "COLUMNS=114"
0x7fffffffecf2: "SSH_CONNECTION=192.168.10.113 50072 192.168.11.192 22"
0x7fffffffed28: "LESSCLOSE=/usr/bin/lesspipe %s %s"
0x7fffffffed4a: "XDG_SESSION_CLASS=user"
0x7fffffffed61: "TERM=xterm"
0x7fffffffed6c: "LESSOPEN=| /usr/bin/lesspipe %s"

使用 env 查看时:

SHELL=/bin/bash
SSH_AUTH_SOCK=/tmp/ssh-n4N7hgv9uU/agent.22373
PWD=/home/share/work/ac-code/command
LOGNAME=xiaozhi
XDG_SESSION_TYPE=tty
MOTD_SHOWN=pam
HOME=/home/xiaozhi
LANG=en_US.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;
SSH_CONNECTION=192.168.10.113 50069 192.168.11.192 22
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_SESSION_CLASS=user
TERM=xterm
LESSOPEN=| /usr/bin/lesspipe %s


通常,在现代系统上,$COLUMNS和$LINES变量不是环境变量。 Shell在每个命令之后动态设置这些值,通常无法从非交互式脚本或程序访问到它们。

你可能感兴趣的:(Linux,linux)