LINUX.ORG.RU

Долго не писал на сях. Как сделать вызов функции из форкнутого имиджа?


0

0

Привет. Задача такая.

Есть ELF-бинарник, зазипованный с ключом. Есть лончер, который читает из файла этот бинарник, распаковывает и запускает, оставаясь сам в памяти.
При этом бинарник должен как-то суметь вызвать функцию, объявленную и закомпилированную в лончере.

Грубо говоря:

launcher:
int myproc() {
return 5;
}
main() {
readfile(buf, "binimage.zip");
unzip_decode(buf);
startprog(buf);
}


binimage:
main() {
printf ("Hello world!\n");
res = call_func(launcher_myproc);
printf ("myproc returned %d.\n", res);
}


Как это проще всего сделать? Спасибо!


>Как это проще всего сделать?

Вызвать функцию не получится, но можно послать сигнал или обмениваться через pipe. Копай в сторону ipc.

Noord
()

смотря что делает функция unzip_decode если вся её работа производится исключительно в памяти, то есть выглядит примерно так : "взять кусок памяти через mmap, развернуть туда elf, определить точку входа, форкнуться и перейти на эту точку" ТО надо в бинарнике объявить void (*f)()=0xffeed070, а функция startprog() после fork`a, но до передачи управления на точку входа должна в этот самый *f поместить указатель на нужную функцию..

нда...сумбурно объяснил :)

MKuznetsov ★★★★★
()

Покушение на Алана не прошло незамеченым

Не знаю зачем нужно такое извращение ... ну сложи функцию в *.so-шку например.

sS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.