Eri*_*ric 7 debugging executable audit
有没有办法查看或获取程序使用的可执行文件列表?
一个特殊的例子是文件滚轮。有没有办法查看它使用了哪些可执行文件,如果有多个可执行文件可以用于同一任务,例如 unrar 和 p7zip-rar。
程序“ldd”可用于查看程序使用的库,但不是实时的。是否有可执行文件的等价物,最好是实时的?或者其他什么方法?
尝试从strace开始。当一个程序调用另一个程序时,它会使用其中一个exec系统调用。例如,给定以下 ruby 脚本:
#!/usr/bin/env ruby
system("ls")
system("df")
Run Code Online (Sandbox Code Playgroud)
我可以 grepstrace输出以找出它运行的可执行文件:
$ strace -f ./test.rb 2>&1 | grep exec
execve("./test.rb", ["./test.rb"], [/* 23 vars */]) = 0
execve("/opt/opscode/embedded/bin/ruby", ["ruby", "./test.rb"], [/* 23 vars */]) = 0
[pid 7696] read(5, "ame+. If the +exec_name+\n # is"..., 8192) = 8192
[pid 7698] execve("/bin/ls", ["ls"], [/* 23 vars */] <unfinished ...>
[pid 7698] <... execve resumed> ) = 0
[pid 7700] execve("/bin/df", ["df"], [/* 23 vars */] <unfinished ...>
[pid 7700] <... execve resumed> ) = 0
Run Code Online (Sandbox Code Playgroud)
在-f确保strace的痕迹也子进程。一开始你可以看到 shell 正在执行我的脚本和 ruby 解释器。然后我们可以看到这个脚本还执行了/bin/ls和/bin/df。请注意,此方法只会显示在运行时使用的可执行文件,而不是在运行时状态不同时可能已使用的所有可执行文件。
| 归档时间: |
|
| 查看次数: |
2118 次 |
| 最近记录: |