【问题标题】:Which environment variables the app is using应用程序正在使用哪些环境变量
【发布时间】: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


【解决方案1】:

strings(1) 可能会帮助您识别环境变量的名称。 – Blagovest Buyukliev

【讨论】:

    【解决方案2】:

    可以使用调试器,在getenv 上设置断点,然后检查函数参数。即使没有调试信息,这也是可能的(尽管更困难,因为它需要了解调用约定)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-27
      • 2019-01-20
      • 2018-09-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      相关资源
      最近更新 更多