Pull to refresh
23
Anthony Shoumikhin@shoumikhin

Software Engineer

45
Subscribers
Send message
С английским понятно — там все по алфавиту. А по какому принципу располагается русский?
Как уже метко подметил 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!
}


test.c — некий импортер этой библиотеки
#include <dlfcn.h>

void func(int);

int main()
{
    void *handle = dlopen("libtest.so", RTLD_LAZY);

    func(1);

    dlclose(handle);

    return 0;
}


Компилируется так:
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

А запускается так:
bash$ export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
bash$ ./test
func got 1
bash$ ./libtest.so
func got 0
Конечно, согласен, такой вариант возможен. Но вопрос остается: работает он без своих запросов на HTTP или пользуется чем-то другим в случае его запрета.
По-моему, второе. Интересно проверить.
Насколько я знаю, Skype начинает ходить через UDP, если закрыть ему TCP порты. Таким образом он работает и без HTTP.
Дисплей глянцевый? :)
Спасибо, да будет так :)
Безусловно проще :) Просто однажды он не подошел и пришлось так изголяться…

> Описанный метод осуществляет переопределение исключительно для конкретной динамически компонуемом библиотеки, а не для всего процесса (исполняемого файла), как при использовании переменной окружения LD_PRELOAD динамического загрузчика, что позволяет остальным модулям безболезненно пользоваться оригиналом функции.
Если в контексте обрезки таблицы виртуальных функций в С++ во время явного приведения типов, тогда точно нет.
Википедия подсказала, что таки замена таблицы импорта.
Я бы точно назвал это «заменой таблицы импорта».

Термин «слайсинг» никогда не слышал. Что это?
> Всегда убивают люди, решившие, что они могут легко разрешить проблему морального выбора за всех граждан своей страны. При таких заявлениях с политической трибуны докладчик либо лицемер, либо просто дурак.

Как Вам кажется, кем были политические лидеры СССР?

PS. Просто интересно…
> Спрос не регулируется превентивными мерами.

Пожалуй, это актуально для человека, адекватно оценивающего уровень того влияния, которое определенная информация произведет на его мозг, а, впоследствии, и на его привычки, ценности и отношения с другими людьми.

Если бы родители руководствовались подобным правилом, не было бы смысла вообще что-либо запрещать своим детям. А вот дети, к сожалению, все больше черпают модели своего поведения в Сети. Ну а Сеть — большая свалка, где, безусловно, есть много хорошего (типа Хабра и иже с ними), но больше мусора.

По-моему, о вкусах не спорят, их прививают. В том числе и превентивными методами. А лучше всего «самопревентивными» :)
12 ...
13

Information

Rating
Does not participate
Location
Seattle, Washington, США
Registered
Activity