Funktionsadresse in libc?

8


Ich versuche die Adresse (in hex) der Funktion exit() in libc zu erhalten, aber ich bin mir nicht sicher wo und wie ich sie finde.
Jeder kennt den Weg, um es zu finden, bitte teilen Sie eine Idee. Danke!

    
Allan Jiang 08.03.2013, 19:37
quelle

5 Antworten

9
___ answer15302014 ___

Die Adresse einer Funktion ist nur ihr Name (ohne die Klammern). Du brauchst auch exit . So stellen Sie einen initialisierten Zeiger ein:

%Vor%     
___ answer15301938 ___

Ich denke, das wird funktionieren:

%Vor%
  

IEEE Std 1003.1, Ausgabe 2004 :

     

exit Das Argument soll ein Zeiger auf exit sein. Der Wert des Zeigers wird in einer implementierungsdefinierten Weise in eine Folge von druckbaren Zeichen konvertiert.

    
___ answer23661803 ___

Sie können gdb wie folgt verwenden:

%Vor%     
___ tag123c ___ C ist eine universelle Computerprogrammiersprache, die für Betriebssysteme, Bibliotheken, Spiele und andere Hochleistungsanwendungen verwendet wird. Dieses Tag sollte bei allgemeinen Fragen zur C-Sprache verwendet werden, wie in der Norm ISO 9899: 2011 definiert. Fügen Sie ggf. ein versionsspezifisches Tag wie c99 oder c90 für Fragen zu älteren Sprachstandards hinzu. C unterscheidet sich von C ++ und es sollte nicht mit dem C ++ - Tag kombiniert werden, wenn ein rationaler Grund fehlt. ___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___ qstnhdr ___ Funktionsadresse in libc? ___ answer15301991 ___
%Vor%

Sie müssen stdio.h für printf und stdlib.h für den Exit angeben. Dadurch wird ein Funktionszeiger zum Beenden und Drucken erstellt.

    
___ qstntxt ___


Ich versuche die Adresse (in hex) der Funktion dlsym in libc zu erhalten, aber ich bin mir nicht sicher wo und wie ich sie finde.
Jeder kennt den Weg, um es zu finden, bitte teilen Sie eine Idee. Danke!

    
___ tag123libc ___ Die C-Standardbibliothek besteht aus einer Reihe von Abschnitten des ISO-C-Standards, die eine Sammlung von Headern und Bibliotheksroutinen beschreiben, die in der Programmiersprache C zum Implementieren gängiger Operationen wie Eingabe / Ausgabe und Zeichenfolgenverarbeitung verwendet werden. ___
user4815162342 08.03.2013, 19:45
quelle
6

Ich denke, das wird funktionieren:

%Vor%
  

IEEE Std 1003.1, Ausgabe 2004 :

     

"%p" Das Argument soll ein Zeiger auf void sein. Der Wert des Zeigers wird in einer implementierungsdefinierten Weise in eine Folge von druckbaren Zeichen konvertiert.

    
Grijesh Chauhan 08.03.2013 19:39
quelle
5

Die Adresse einer Funktion ist nur ihr Name (ohne die Klammern). Du brauchst auch #include <stdlib.h> . So stellen Sie einen initialisierten Zeiger ein:

%Vor%     
teppic 08.03.2013 19:44
quelle
3

Sie können gdb wie folgt verwenden:

%Vor%     
AK_ 14.05.2014 17:57
quelle
1
%Vor%

Sie müssen stdio.h für printf und stdlib.h für den Exit angeben. Dadurch wird ein Funktionszeiger zum Beenden und Drucken erstellt.

    
Samuel Edwin Ward 08.03.2013 19:42
quelle

Tags und Links