Você pode tentar:
strace -fe open cmd 2>&1 >/dev/null | grep -v '= -1' | cut -d\" -f2
Para ver o que é aberto em tempo de execução.
Eu gostaria de encontrar todos os arquivos dos quais um binário depende (incluindo bibliotecas, arquivos de configuração, basicamente todos os arquivos referenciados no binário).
Eu sei que você pode encontrar bibliotecas compartilhadas com objdump, ldd, readelf
, mas e as bibliotecas carregadas dinamicamente ( dlopen
) e outros arquivos ( /etc/some/config
)?
Até agora, eu tenho uma solução half-baked que pesquisa o binário por strings (nomes de arquivos) ( $ strings /path/to/binary | grep lib
), mas acho que a solução adequada seria procurar por chamadas do sistema que o binário produz ( read, write, dlopen, etc
). / p>
Infelizmente, não tenho nenhuma experiência com desmontadores ou uma ideia sobre outros métodos.
Além disso, não posso usar soluções que dependam da execução do binário (strace, e mexer, etc.), porque preciso fazer isso para um grande número de binários em massa.
Uma solução que encontre cerca de 90% de todos os arquivos referenciados por um binário seria suficiente.
Os binários para examinar são binários padrão (Arch) Linux (multilib). Eu suponho que a maioria deles foi compilada pelo gcc (-O2).
Tags dependencies binary