append — Как выполнить машинный код, добавленный в конец исполняемого файла, используя c ++?

У меня есть программа, которая добавляет машинный код в конец исполняемого файла, и я хочу написать программу на С ++ в начале исполняемого файла, чтобы запустить добавленный машинный код. Затем добавленный код запустит оригинальную программу.

Моя программа будет работать на Mac.

Здесь есть похожий вопрос: Выполнение машинных кодов, прикрепленных в конце исполняемого файла
Однако на этот вопрос ответа не последовало, альтернативные решения были даны. Я не могу использовать связанные списки, потому что цель этой программы — изменить функциональность исполняемых файлов на машинах, на которых не обязательно установлен компилятор.

Вот пример:

// C++ program at the beginning of file, runs appended machine code.

// Original program, must be skipped over and run after appended machine code is run.

#include <iostream>
#include <stdio.h>
using namespace std;

int main()
{
FILE *input,*output;
char buffer[512];

=fopen("a.out","rb");
output=fopen("filename","ab");

for(;fread(buffer,512,1,input)==1;)
fwrite(buffer,512,1,output);
fclose(output);
cout << "Testing, testing, testing" << endl;

//Run original program
}

2

Решение

Вы можете создать программу, которая создает исполняемый файл из добавленного кода и затем выполняет его.
Или, если вам нужно, чтобы исполняемый файл выполнял код, добавленный к нему, то вам пришлось бы вызывать этот добавленный код как функцию или перейти к нему во встроенной сборке («call» или «jmp»).

0

Другие решения


По вопросам рекламы [email protected]