Sua abordagem está perfeitamente bem.
Aqui está um exemplo de C que incorpora cat
e, após a execução, grava-o em um arquivo temporário e o marca como executável:
//$ xxd --include /bin/cat
//^ create _bin_cat and _bin_cat_len
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
int main(){
//TODO: error checking everywhere
char tmp[] = "/tmp/cat-XXXXXX";
mkstemp(tmp);
FILE* f = fopen(tmp, "w");
fwrite(_bin_cat, _bin_cat_len, 1, f);
fchmod(fileno(f), 0700);
puts(tmp); //print the name of where the embeded cat got copied to
return 0;
}
Funciona bem para mim.