Я пытаюсь встроить исполняемый двоичный файл в другой, а затем записать первый двоичный файл в файл.
Я успешно достиг этого с помощью простого текстового файла, но когда дело доходит до написания исполняемого файла, я не могу заставить его работать.
Например, я хочу скопировать /usr/bin/ls
в ls2
, вот что я попробовал
Первый: objcopy --input binary --output elf64-x86-64 --binary-architecture i386 /usr/bin/ls lss.o
код C:
#include <stdio.h>
FILE *f;
extern char _binary_lss_start;
extern char _binary_lss_end;
main()
{
f = fopen("lss", "w");
fprintf(f, &_binary_lss_start);
fclose(f);
return 0;
}
Компиляция: gcc main.c lss.o
Код успешно скомпилирован, но когда я пытаюсь ./a.out
ничего не записывается в lss.
(я использую Arch Linux 4.18.5 и gcc 8.2.0.)
Могу ли я достичь этого?