abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 05:00 | Nová verze

    Byl vydán AlmaLinux OS 10.1 s kódovým názvem Heliotrope Lion. S podporou Btrfs. Podrobnosti v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Komunita

    Placená služba prohledávání zprostředkovatelů dat a automatického odstraňování uniklých osobních údajů Mozilla Monitor Plus bude 17. prosince ukončena. Bezplatná monitorovací služba Mozilla Monitor bude i nadále poskytovat okamžitá upozornění a podrobné pokyny k omezení rizik úniku dat. Služba Mozilla Monitor Plus byla představena v únoru loňského roku.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | Nová verze

    Waydroid (Wikipedie, GitHub) byl vydán v nové verzi 1.6.0. Waydroid umožňuje spouštět aplikace pro Android na běžných linuxových distribucích. Běhové prostředí vychází z LineageOS.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Nová verze

    Příspěvek na blogu Raspberry Pi představuje novou kompletně přepracovanou verzi 2.0 aplikace Raspberry Pi Imager (YouTube) pro stažení, nakonfigurování a zapsání obrazu operačního systému pro Raspberry Pi na SD kartu. Z novinek lze vypíchnout volitelnou konfiguraci Raspberry Pi Connect.

    Ladislav Hagara | Komentářů: 2
    včera 11:22 | Nová verze

    Memtest86+ (Wikipedie), svobodný nástroj pro kontrolu operační paměti, byl vydán ve verzi 8.00. Přináší podporu nejnovějších procesorů Intel a AMD nebo také tmavý režim.

    Ladislav Hagara | Komentářů: 0
    včera 10:55 | Nová verze

    Programovací jazyk Racket (Wikipedie), tj. jazyk z rodiny jazyků Lisp a potomek jazyka Scheme, byl vydán v nové major verzi 9.0. Hlavní novinku jsou paralelní vlákna (Parallel Threads).

    Ladislav Hagara | Komentářů: 0
    včera 10:11 | Komunita

    Před šesti týdny bylo oznámeno, že Qualcomm kupuje Arduino. Minulý týden byly na stránkách Arduina aktualizovány podmínky používání a zásady ochrany osobních údajů. Objevily se obavy, že by otevřená povaha Arduina mohla být ohrožena. Arduino ubezpečuje, že se nic nemění a například omezení reverzního inženýrství v podmínkách používání se týká pouze SaaS cloudové aplikace.

    Ladislav Hagara | Komentářů: 0
    23.11. 13:33 | Bezpečnostní upozornění

    Knihovna libpng, tj. oficiální referenční knihovna grafického formátu PNG (Portable Network Graphics), byla vydána ve verzi 1.6.51. Opraveny jsou 4 bezpečnostní chyby obsaženy ve verzích 1.6.0 (vydána 14. února 2013) až 1.6.50. Nejvážnější z chyb CVE-2025-65018 může vést ke spuštění libovolného kódu.

    Ladislav Hagara | Komentářů: 10
    23.11. 12:22 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 159 (pdf).

    Ladislav Hagara | Komentářů: 0
    21.11. 22:33 | Zajímavý software

    Hru Warhammer: Vermintide 2 (ProtonDB) lze na Steamu získat zdarma napořád, když aktivaci provedete do pondělí 24. listopadu.

    Ladislav Hagara | Komentářů: 3
    Jaké řešení používáte k vývoji / práci?
     (35%)
     (46%)
     (19%)
     (18%)
     (22%)
     (15%)
     (23%)
     (16%)
     (17%)
    Celkem 396 hlasů
     Komentářů: 17, poslední 19.11. 21:57
    Rozcestník

    Zvrhlé hříčky s knihovnami pro céčko

    29.9.2006 16:33 | Přečteno: 2200× | IT | poslední úprava: 29.9.2006 18:15

    Dnes jsem absolvoval již druhou přednášku jednoho z velice zajímavých předmětů na FI MUNI aneb "Unix – programování a správa systému". Je to jeden z předmětů, kde se člověk konečně dozví nějaké praktické detaily (o programovování pod UNIXem...) a ne jen obecné teoretické blafy nebo IMHO věci, které by měly být náplní středoškolské informatiky. Dnes jsme věnovali část přednášky knihovnám a po zjištění, že pomocí LD_PRELOAD lze programům podstrčit "poupravené" funkce, jsem se vrhl na přepisování printf a scanf :-).

    LD_PRELOAD je proměnná shellu, do které lze umístit název knihovny, která má být dynamicky přilinkovaná jako první ke spuštěnému programu. Co to v praxi znamená? Že pokud knihovna obsahuje nějaké funkce, které jsou v jiné dynamicky načítané knihovně, pak budou tyto "odstíněny" naší novou verzí... Řekl jsem si, že většina programů se mnou nekomunikuje dostatečně přívětivě a tak jsem si zkusil napsat printf a scanf tak, aby byl ke mně počítač milejší ;-). Postup je jednoduchý. Nejdříve napíšeme zdroják s nově definovanými funkcemi. Třeba libhell.c:

    #include <stdio.h>
    #include <stdarg.h>
    
    int printf(const char *format, ...) {
       va_list args;
    
       va_start(args, format);
       vfprintf(stdout, "[Hello my boss!] :-) ", NULL);
       vfprintf(stdout, format, args);
       va_end(args);
       return vfprintf(stdout, "(-: [You're the best user!]\n", NULL);
    }
    
    int scanf(const char *fmt, ...)
    {
       int rc;
       va_list args;
    
       va_start(args, fmt);
    
       vfprintf(stdout, "(?) ;-) [Tell me something nice, my darling.]: ", NULL);
       rc = vfscanf(stdin, fmt, args);
       vfprintf(stdout, "    :-O [Thank you, boss!]\n", NULL);
    
       va_end(args);
    
       return rc;
    }
    

    To bychom měli to podstatné. Teď to ještě zkompilovat a nainstalovat. To uděláme s pomocí libtool: libtool --mode=compile gcc -g -O -c libhell.c; libtool --mode=link gcc -g -O -o libhell.la libhell.lo -rpath /usr/local/lib. Tak, knihovna je zkompilovaná a slinkovaná, takže ji už jen nakopírujeme do /usr/local/lib: cp libhell.la .libs/libhell.so* /usr/local/lib/.

    Naše nová a uživatelsky přívětivější ;-) implementace funkcí printf a scanf je na světě (dokonce i v našem počítači), ale ještě jsme ji nepodstrčili žádnému programu. Nicméně není to nic těžkého. Bashi řekneme export LD_PRELOAD="/usr/local/lib/libhell.so" a schválně si zkuste spustit "hello world" nebo jiný program, který používá přepsané funkce... Já jsem se nejvíc nasmál, když jsem provedl změny v libhell.c, spustil libtool a ten mi místo příkazů, které spouští, vypisoval jen "Burn in hell!" – to byla původní implementace :-D.

           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    29.9.2006 16:52 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Pěkné :-)

    Nemělo by místo „Say me something…“ být „Tell me something…“ ?
    29.9.2006 17:07 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Jojo … :-) Ale tomuhle příkladu teda říkám „zvrhlost“… :-D Myslím, že se najde hromada užitečnějších využití, třeba mnou kdysi zmíněná knihovna libtrash a podobně. :-)
    29.9.2006 18:05 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Tohle je ještě pitomější použití než to které tam bylo uvedeno jako příklad :-)
    Copak toho není dost?
    29.9.2006 18:10 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Tsss!!! :-D
    29.9.2006 18:12 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Myslel jsem to v tomhle blogu oproti tomu v přednášce. Koš je právě užitečné použití :-)
    Copak toho není dost?
    29.9.2006 18:21 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    To mi lichotí :-D.

    Jinak s tím "Tell me...": aspoň vidíte, proč jsem dostal za vstupní text z angliny jen 17 bodů z 50 ;-). Díky za korekci :-)
    θηριον ειμι
    29.9.2006 18:29 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    No já dostal takřka dvakrát tolik a taky bych tam dal Tell me, tak nevím.
    Copak toho není dost?
    29.9.2006 19:21 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    ;-) Ale ono tam má být "Tell me". Já tam měl původně "Say me" a pak jsem to opravil ;-). Holt se musím ještě hodně učit :-D
    θηριον ειμι
    29.9.2006 19:25 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Aha. Nějak mi dneska není vůbec dobře, tak mi to asi myslí ještě hůř než normálně.
    Copak toho není dost?
    29.9.2006 19:27 Kyosuke | skóre: 28 | blog: nalady_v_modre
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Což o to, ono to nemusí být vyloženě špatně … :-) Viz třeba tohle:
    A: „Say me something.“

    B: „As you wish: Me something.“
    :-D :-D
    29.9.2006 19:40 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    No vida! Takže jsem to měl vlastně úplně správně a vy jste mě jen zmátli :-D :-D :-D
    θηριον ειμι
    29.9.2006 17:05 MaV | skóre: 6 | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Tak to jsme se museli na přednášce potkat :-)
    S tim, že je to hodně zajímavej předmět souhlasím, hlavně se už ale těším na druhou část, která se bude věnovat víc správě systému.
    Ale takhle si hrát s LD_PRELINK by mě fakt nenapadlo ;-)
    29.9.2006 17:07 MaV | skóre: 6 | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Samozřejmě jsem myslel LD_PRELOAD
    29.9.2006 17:12 k3 | skóre: 15 | blog:  
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    takovehle veci se obcas pouzivaji u re :)
    29.9.2006 18:19 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Tak to jsme se museli na přednášce potkat :-)
    JJ, byl jsem překvapen, že nás tam bylo dneska (vzhledem ke včerejšímu státnímu svátku a zítřejšímu výkendu) tolik :-D. Asi to poukazuje nejen na fakt, že nejsou dostupné videozáznamy, jak říkal pan Kasprzak :-D

    Jinak já si s tím hrál, protože jsem čekal, až se mi provede dist-upgrade mého slackware ;-)
    θηριον ειμι
    Zdenek.Z avatar 29.9.2006 17:18 Zdenek.Z | skóre: 14
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Jen bych si dovolil malou poznámku:
    :%s/\(#include \)\(.*\)/\1<\2>/
    A UNIXpass byl dobrý předmět. Bohužel jsem si z časových důvodů loni nemohl zapsat dvojku, ale už se těším na příští semestr.
    29.9.2006 18:15 Lukáš Rýdlo | skóre: 18 | blog: Silný kafe | Brno
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Ej karamba -- řvalo to na mně, že tam mám blbej "tag", tak jsem ty závorky umazal a zapomněl doplnit entity... Dikec ;-)
    θηριον ειμι
    30.9.2006 15:13 ondracch | skóre: 19 | blog: Mozková kreč
    Rozbalit Rozbalit vše Re: Zvrhlé hříčky s knihovnami pro céčko
    Konečně blog o něčem. Jen tak dál.
    Proč myslíš, že nemůžeš žít jinak? Pořád Tvořím...

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.