私の考えではバイナリが依存するすべてのファイルを探す(ライブラリ、設定ファイル、デフォルトでバイナリで参照されるすべてのファイルを含む)
私はあなたが見つけることができることを知っています共有ライブラリそしてobjdump, ldd, readelf
、dlopen
しかし、動的にロードされたライブラリ()と他のファイル()はどうですか/etc/some/config
?
これまで、私はバイナリから文字列(ファイル名)($ strings /path/to/binary | grep lib
)を検索する方法は解決策を持っていますが、正しい解決策はバイナリ(read, write, dlopen, etc
)によって実行されたシステムコールを検索することだと思います。
残念ながら、私は逆アセンブラの経験がなく、他の方法も知りません。
また、大量のバイナリに対してこの操作をまとめて実行する必要があるため、バイナリの実行(strace、fiddlingなど)に依存するソリューションを使用することはできません。
バイナリが参照するすべてのファイルの約90%を見つけるためのソリューションで十分です。
確認するバイナリは、標準(Arch)Linux(multilib)バイナリです。私はほとんどがgcc(-O2)でコンパイルされたと仮定します。
答え1
あなたは試すことができます:
strace -fe open cmd 2>&1 >/dev/null | grep -v '= -1' | cut -d\" -f2
実行時に何が開いているかを確認してください。