Funktion Adresse in der libc?
Ich versuche erhalten Sie die Adresse (in hex) der Funktion exit()
in libc, aber ich bin nicht sicher, wo und wie es zu finden.
Wer kennt den Weg, es zu finden, bitte teilen Sie einige Idee. Danke!
- Alle Antworten sind gut, aber Sie sollten erkennen, dass
exit(3)
ist eine standard-library-Funktion aufrufen, die_exit(2)
syscall-das ist nicht wirklich eine Funktion sondern ein system-call (man kann es aufrufen, mit assembler-code, ohne jede gewöhnliche Funktionsaufrufe, auch wenn die_exit
- Funktion aus der libc, ist die Verpackung der Systemaufruf als Funktion callable von C)... Die eigentliche Arbeit der system-Aufrufe innerhalb des Kernels.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie müssen die Adresse des
exit
Funktion bereits in Ihren Prozess, finden Sie die Antworten von Grijesh und andere. Aber wenn Sie brauchen, um zu beheben, die libcexit
Funktion mit Namen, beispielsweise, weil die libc istexit
wurde überschattet von einer anderen Bibliothek, können Sie Sie mitdlsym
:Für
dlsym
zu beheben, müssen Sie den link mit-ldl
.gcc -o getptr getptr.c -ldl
. Die ldl-Werte kommt, nachdem die gcc-Zeug.Ich denke, das wird Arbeit:
Die Adresse einer Funktion wird nur der name (ohne die Klammern). Sie müssen
#include <stdlib.h>
als gut. Um eine initalised Zeiger:Können Sie gdb wie folgt:
Müssen Sie include stdio.h für printf () und stdlib.h für die Ausfahrt. Dies erstellt eine Funktion Zeiger auf exit und druckt es.