Use um invólucro de shell?
mv foo foo.real
cat >foo <<EOF
#!/bin/sh
... whatever instrumentation ...
exec foo.real "$@"
EOF
chmod +x foo
Isso falhará se foo precisar ser chamado foo e, nesse caso, PATH truques podem ser necessários ou mover foo para um diretório libexec ou algo parecido. Ignore o exec bit se a instrumentação de pós-execução também tiver que acontecer.