【发布时间】:2014-12-09 12:09:36
【问题描述】:
我有从 C 源代码编译的二进制可执行文件,我知道它使用了一些 UNIX 系统环境变量。不幸的是,我没有文档,反编译/逆向工程非常困难。
有没有办法找到应用程序在运行时尝试读取哪些环境变量?
我的意思是,如果 C 的 getenv 读取某个文件以获取变量值或进行系统调用,这是可能的。那么,我能做到吗?
【问题讨论】:
-
我不是环境变量方面的专家,但我认为您可以使用
ptrace跟踪系统调用。 -
strings(1)可能会帮助您识别环境变量的名称。 -
谢谢,Blagovest!它有帮助。
-
@Benno Zeeman:
strace(这可能是你的意思,ptrace()是系统调用strace使用)在这里没有多大帮助。getenv()不是系统调用,它是一个 C 库函数,它基本上只是取消引用main()函数的第三个参数(可作为__environ指向每个 C 程序的指针),它指向环境变量所在的进程内存区域存储。 -
作为@BennoZeeman 答案的支持答案。您还可以使用
ltrace工具检查getenv的调用。
标签: c unix environment-variables getenv