我有从C源编译的二进制可执行文件,我知道它使用了一些UNIX系统环境变量。不幸的是,我没有文档,反编译/逆向工程非常困难。应用程序使用哪些环境变量
有没有办法找到应用程序试图在运行时读取哪些env变量?
我的意思是,如果C的getenv
读取某个文件以获取变量值或执行系统调用,则可以。那么,我能做到吗?
我有从C源编译的二进制可执行文件,我知道它使用了一些UNIX系统环境变量。不幸的是,我没有文档,反编译/逆向工程非常困难。应用程序使用哪些环境变量
有没有办法找到应用程序试图在运行时读取哪些env变量?
我的意思是,如果C的getenv
读取某个文件以获取变量值或执行系统调用,则可以。那么,我能做到吗?
strings(1)
可能会帮助您识别环境变量的名称。 – Blagovest Buyukliev
可以使用调试器,在getenv
上设置断点,然后检查函数参数。即使没有调试信息,这也是可能的(尽管比较困难,因为它需要知道调用约定)。
我不是环境变量的专家,但我认为你可以用'ptrace'来跟踪系统调用。 – bzeaman 2014-12-09 12:13:45
'strings(1)'可能会帮助您识别环境变量的名称。 – 2014-12-09 12:20:27
谢谢,Blagovest!它有帮助。 – 2014-12-09 12:31:24