Zeitauskunft (war: Re: [linux-l] Dateien mit '/' im Dateinamen)

Steffen Dettmer steffen at dett.de
Fr Aug 1 10:16:58 CEST 2003


* Jan-Benedict Glaw wrote on Thu, Jul 31, 2003 at 12:56 +0200:
> On Thu, 2003-07-31 08:55:41 +0200, Steffen Dettmer <steffen at dett.de>
> wrote in message <20030731085541.F2642 at dx.net.de>:
> > * Jan-Benedict Glaw wrote on Wed, Jul 30, 2003 at 12:52 +0200:
> > > Ist vom Prinzip her ganz einfach (ich häng' mal 'was an, mit
> > > dem ich lib-Aufrufe abfange), funktioniert hier aber nicht, da
> > > LD_PRELOAD-libs nicht auf setuid-Programme (vmware ist
> > > sowas!!!) angewandt werden. 
> > 
> > Na ja, kriegt man aber systemweit hin.
> > 
> > > Für die libc-Funktionen atexit() und on_exit() sieht das z.B. so aus:
> > 
> > Versteh ich nicht.
> 
> Es gibt zwei Funktionen, um Funktion(spointer) an die libc zu übergeben,
> die der Reihe nach aufgerufen werden sollen, wenn das Programm exit()
> aufruft oder via return xx; auf main() herausspringt. Das habe ich als
> Beispiel gegeben, weil ich's gerade fertig vor mir hatte.

Schon fertig aus anderem Grund? Ohh... Soll man da nicht
atexit(3) verwenden? Chaining macht die ja automatisch IIRC.

> > >         if(orig_atexit)
> > >                 return (*orig_atexit)(function);
> > >         else
> > >                 return -1;
> > > }
> > 
> > Orginalen at_exit aufrufen.
> 
> So.

Ja, interessanter Weg :) Anstatt sich "hinter" atexit
einzuklinken, machst Du das vorn. Na ja, aber wohl auch eher zu
Test/Debugzwecken als in Produktion :)

> Im Endeffekt brauchst Du nicht viel mehr, als die
> Funktionsnamen auszutauschen, um time() und gettimeofday() auf
> diesem Wege abzufangen.

Die man sich natürlich auch prima statisch linken kann :-) Jo,
aber klar, hab's dann doch verstanden.

> > > #define INTERCEPT_TARGET RTLD_NEXT
> > 
> > Kennt meine Man-Page nicht.
> 
> Tiefes libc-Wissen:)

Du meinst, unprotabel, ja? :-) Und was heißt das nu?

> Nicht mehr. In 2.6.x ist sys_call_table nicht mehr EXPORT_SYMBOL()ed
> sodaß Du darauf (zumindest aus einem Modul heraus) keinen (einfachen)
> Zugriff bekommst.

So kann man sich das Tool laden, welches eine Funktion
bereitstellt, die die Tabelle doch returnt? :-) just kidding -
aber gibt's bestimmt in diversen Kreisen.

> > mal ntp.c mailen (das macht ptrace für uid != 0 platt). So
> > müßte man auch gettimeofday - oder was der Kernel da anbietet
> > - umbiegen können, denke ich. Oder?
> 
> In 2.4.x klappt das noch. Aber sowas ist einfacher, im Userspace zu
> machen. S.o.

Na ja, vermutlich linkt man sowas immer statisch. Ach, nee, weiß
nicht. Aber das Kernelmodul find ich viel eleganter und schicker
:-)

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.




Mehr Informationen über die Mailingliste linux-l