libslang0.99.34 > libslang0.99.38
Pavel Janik ml.
Pavel.Janik na inet.cz
Čtvrtek Leden 15 01:08:48 CET 1998
Datum: streda, 14.ledna 1998 21:16:03 +0100 (MET)
Odesilatel: Pavel Machek <pavel na elf.ucw.cz>
> > libslang.so.0.99.34 => /usr/lib/libslang.so.0.99.34
> > pak se program tvrde dozaduje urcite verze (coz neni moc ok, ale proste
> > byl tak vytvoren) a lze 1) oblbnout ho linkem, 2) prekompilovat ho (resp.
> > prelinkovat), 3) "opravit" exac (jen pro pokrocile)
A nepomuze pouhe LD_PRELOAD=/usr/lib/libslang.so.0.99.38?
> Myslis doufam exec, ze? Hmm, nevidim jak by to pomohlo, ja bych
> 'opravoval' ld.so.
Oprava do_execve by asi nepomohla, ale ve fs/binfmt_elf.c je funkce
static int load_elf_library(int fd)
ktera zajistuje nahravani knihoven ve formatu ELF do pameti. Jeji
upravou by se jiste dalo docilit pozadovaneho cile...
BTW - Mam jeden souvisejici dotaz. Predstavte si tuto situaci. Mam
programek:
#include <stdio.h>
void main()
{
printf("Hello World :-))\n");
}
Zkompiluji ho (gcc program.c). Budu mit ./a.out:
SnowWhite:~/Tmp$ ldd a.out
libc.so.6 => /lib/libc.so.6 (0x40003000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
SnowWhite:~/Tmp$
A ted chci dat strace ./a.out, ale s jednou podminkou - chci pouzit
starou libc5 (ne pro strace, ale pro a.out). Ale v tom je hacek,
protoze strace konci s libc5 se SEGFAULT.
Napadlo mne pouze poslat strace -f na skript:
#!/bin/bash
LD_PRELOAD=/usr/i486-linux-libc5/lib/libc.so.5 ./a.out
Existuje i nejaka jina moznost (samozrejme krome staticke
kompilace...)?
--
Pavel Janik ml.
Pavel.Janik na inet.cz
Další informace o konferenci Linux