Kann LD_PRELOAD eine über dlopen()/dlsym() aufgelöste Funktion ersetzen?C++

Programme in C++. Entwicklerforum
Anonymous
 Kann LD_PRELOAD eine über dlopen()/dlsym() aufgelöste Funktion ersetzen?

Post by Anonymous »

Ich habe ein Szenario, in dem:
  • Ein Programm dynamisch liba.so mit dlopen() lädt, dann die Funktion func1() daraus über dlsym() auflöst und aufruft.
  • Ich habe libb.so erstellt, das die gleichnamige Funktion neu definiert func1().
    Meine Frage: Ist es möglich, die Umgebungsvariable LD_PRELOAD zu verwenden, um das Programm zu zwingen, func1() von libb.so anstelle des ursprünglichen func1() von liba.so zu verwenden? Wenn dies standardmäßig nicht möglich ist, welche Änderungen (am Programm, liba.so oder libb.so) wären dann erforderlich, damit LD_PRELOAD in diesem Fall funktioniert?
Ich habe libb.so tatsächlich zusammen mit der Funktion func1() geschrieben. Anschließend habe ich versucht, die ursprüngliche Funktion func1() mithilfe der Umgebungsvariablen LD_PRELOAD einzubinden. Es passierte jedoch nichts – mein Haken zeigte keine Wirkung. Ich vermute, dass LD_PRELOAD über dlsym() aufgelöste Funktionen nicht abfangen kann. Ich frage mich, ob diese Annahme richtig ist.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post