The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

[Solaris] пример использования LD_PRELOAD (solaris lib wrapper security)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: solaris, lib, wrapper, security,  (найти похожие документы)
From : http://solaris.org.ru Subj : [Solaris] пример использования LD_PRELOAD ------------------------------------------------------------------------------- SUN Solaris: hacks http://solaris.org.ru _________________________________________________________________ Как получить вечную лицензию для SUN WorkShop 5.0 Идея этого хака до безобразия проста и элегантна. Мы надеемся что вы не воспользуетесь им для промышленной эксплуатации Sun WorkShop. Просто это один из способов использования LD_PRELOAD, например так же например работает runsocks из пакета Socks5. Как известно Sun WorkShop использует систему FlexLM &tm; для проверки лицензий. 1. Получаем временную лицензию на месяц: SPARC: http://jsecom4.sun.com:80/ECom/licenses/sparc.dat x86: http://jsecom4.sun.com:80/ECom/licenses/intel.dat 2. Из этого исходника делаем shared library. которая переопределяет функцию time(3). /* gcc -fpic -shared -O4 -pipe -s -o xflexlm.so xflexlm.c */ #include <stdio.h> #include <unistd.h> #include <dlfcn.h> #include <sys/systeminfo.h> #include <sys/utsname.h> static void *libc_handle = NULL; static long (*time_ptr)() = NULL; static int xflexlm_inited = 0; static void xflexlm_init (void) { if (libc_handle = dlopen ("libc.so", RTLD_LAZY)) { if (!(time_ptr = dlsym (libc_handle, "time"))) fprintf (stderr, "xflexlm: can't find time()\n"); } else fprintf (stderr, "xflexlm: can't open libc.so, sorry\n"); xflexlm_inited = 1; } time_t time(time_t *tloc) { time_t value; if (!xflexlm_inited) xflexlm_init(); value = (*time_ptr)(tloc); return (time_t)920000000; /* 26-Feb-1999 */ } 3. Делаем shell wrapper для всех программ #!/bin/sh # # Fool workshop compiler ;) # LD_LIBRARY_PATH=/opt/SUNWspro/xflexlm export LD_LIBRARY_PATH LD_PRELOAD=xflexlm.so export LD_PRELOAD case `basename $0` in cc) exec /opt/SUNWspro/SC4.0/bin/cc $* ;; CC) exec /opt/SUNWspro/SC4.0/bin/CC $* ;; workshop) exec /opt/SUNWspro/WS5.0/bin/workshop $* ;; *) echo "Hmm, don't know full path to executable `basename $0`" esac 4. Устанавливаем их в /opt/SUNWspro/bin root# cd /opt/SUNWspro/bin root# unlink cc CC workshop root# cp ~/ws_wrapper.sh cc root# ln cc CC root# ln cc workshop 5. Все, теперь можно забыть про лицензии... ;-) _________________________________________________________________ (x) 2000 solaris.org.ru Changes: Thursday, 08-Jun-2000 23:54:26 IRKST

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, Mihail (?), 21:58, 05/09/2002 [ответить]  
  • +/
    Просьба автора статьи связаться со мной по мылу.
    Есть предложение.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру