Eu preciso que, quando um arquivo ELF for executado, ele execute um comando.
Por exemplo: Running /usr/bin/file
que é um ELF Binary já compilado, execute o comandotouch /tmp/file_is_executed
se pudesse, recompilaria o código e adicionaria o comando que desejo ao arquivo de origem. No entanto, não tenho o código-fonte, então tenho que lidar com a versão compilada.
Se você precisar que isso aconteça apenas para você como uma solução rápida, você pode usar uma função para substituir o comando de destino:
No entanto, se você deseja rastrear a execução do comando em um aplicativo opaco ou quando outros executam o comando, uma função não estará necessariamente disponível quando você precisar dela. Da mesma forma, se o executável de destino for chamado com um caminho completo (ou seja,
/usr/bin/file
em vez defile
), você não poderá usar essa abordagem. Nesses casos, você pode criar sua própria implementação do executável de destino.Observe que nenhuma solução altera um executável ELF que você descreve em sua pergunta. (A correção de um binário não é uma operação trivial.)
Exemplo trabalhado
/usr/bin/file
apenas para você:Crie um script como
~/bin/file.sh
(você pode precisarmkdir ~/bin
primeiro):Torne o script legível e executável
Instale o script como a coisa real
Certifique-se de que ~/bin esteja em seu
$PATH
antes/usr/bin
Exemplo trabalhado para
/usr/bin/file
todos (você precisará de privilégios de root para fazer isso, então algo comosudo
,doas
ousu
será necessário):Crie um script como
/usr/bin/file.sh
Torne o script legível e executável
Instale o script como a coisa real