Как уже метко подметил hmage, это возможно. Только при компиляции нужно вручную указать имя новой точки входа, а в модуле — путь к загрузчику.
Набросал пример:
libtest.c — библиотека, что будет запускаться
#include <stdio.h>
#include <stdlib.h>
char const interp[] __attribute__((section(".interp"))) = "/lib/ld-linux.so.2";
//path to your dynamic linker (make sure that symbolic link refers to the real linker for your system)
void func(int i)
{
printf("func got %i\n", i);
}
int main()
{
func(0);
exit(0); //do not return, only exit!
}
bash$ gcc -fPIC -shared -Wl,-e,main -o libtest.so libtest.c #"-Wl,-e,main" to make a special named entry point
bash$ gcc -L$PWD -ltest -ldl -o test test.c
Конечно, согласен, такой вариант возможен. Но вопрос остается: работает он без своих запросов на HTTP или пользуется чем-то другим в случае его запрета.
По-моему, второе. Интересно проверить.
Безусловно проще :) Просто однажды он не подошел и пришлось так изголяться…
> Описанный метод осуществляет переопределение исключительно для конкретной динамически компонуемом библиотеки, а не для всего процесса (исполняемого файла), как при использовании переменной окружения LD_PRELOAD динамического загрузчика, что позволяет остальным модулям безболезненно пользоваться оригиналом функции.
> Всегда убивают люди, решившие, что они могут легко разрешить проблему морального выбора за всех граждан своей страны. При таких заявлениях с политической трибуны докладчик либо лицемер, либо просто дурак.
Как Вам кажется, кем были политические лидеры СССР?
Пожалуй, это актуально для человека, адекватно оценивающего уровень того влияния, которое определенная информация произведет на его мозг, а, впоследствии, и на его привычки, ценности и отношения с другими людьми.
Если бы родители руководствовались подобным правилом, не было бы смысла вообще что-либо запрещать своим детям. А вот дети, к сожалению, все больше черпают модели своего поведения в Сети. Ну а Сеть — большая свалка, где, безусловно, есть много хорошего (типа Хабра и иже с ними), но больше мусора.
По-моему, о вкусах не спорят, их прививают. В том числе и превентивными методами. А лучше всего «самопревентивными» :)
Набросал пример:
libtest.c — библиотека, что будет запускаться
test.c — некий импортер этой библиотеки
Компилируется так:
А запускается так:
По-моему, второе. Интересно проверить.
> Описанный метод осуществляет переопределение исключительно для конкретной динамически компонуемом библиотеки, а не для всего процесса (исполняемого файла), как при использовании переменной окружения LD_PRELOAD динамического загрузчика, что позволяет остальным модулям безболезненно пользоваться оригиналом функции.
Термин «слайсинг» никогда не слышал. Что это?
Как Вам кажется, кем были политические лидеры СССР?
PS. Просто интересно…
Пожалуй, это актуально для человека, адекватно оценивающего уровень того влияния, которое определенная информация произведет на его мозг, а, впоследствии, и на его привычки, ценности и отношения с другими людьми.
Если бы родители руководствовались подобным правилом, не было бы смысла вообще что-либо запрещать своим детям. А вот дети, к сожалению, все больше черпают модели своего поведения в Сети. Ну а Сеть — большая свалка, где, безусловно, есть много хорошего (типа Хабра и иже с ними), но больше мусора.
По-моему, о вкусах не спорят, их прививают. В том числе и превентивными методами. А лучше всего «самопревентивными» :)