Предположим, двоичный файл - это PIC. Как я могу загрузить его в память и выполнить точку входа? Я делаю это, чтобы познакомиться с ELF, поэтому execve не допускается.
execve
Это основные шаги:
mmap
MAP_FIXED
DYNAMIC
RELATIVE
Построить стек записи ELF-программы, состоящий из следующей последовательности значений размером с системное слово в массиве в стеке:
ARGC ARGV[0] ARGV[1] ... ARGV[ARGC-1] 0 ENVIRON[0] ENVIRON[1] ... ENVIRON[N] 0 0
(для этого шага требуется ASM!)Наведите указатель стека на начало этого массива и перейдите к адресу точки входа загруженной программы (который можно найти в заголовках программы).