Tengo un objeto compartido (dll). ¿Cómo puedo saber de qué se exportan todos los símbolos?
linux
shared-libraries
chappar
fuente
fuente

Respuestas:
¿Tiene un "objeto compartido" (generalmente una biblioteca compartida en AIX), una biblioteca compartida UNIX o una DLL de Windows? Todas estas son cosas diferentes, y su pregunta las combina todas :-(
dump -Tv /path/to/foo.o.readelf -Ws /path/to/libfoo.so, o (si tiene GNU nm)nm -D /path/to/libfoo.so.dumpbin /EXPORTS foo.dll.fuente
nmTambién funciona en MacOSX, excepto la-Dopción. Obrew install binutilsy use la versión GNU a través degnm. Para GNUnm,--demangletambién es útil. Tambiéngobjdump.linuxasí que creo que es seguro decir que @chappar tiene una biblioteca compartida de Linux.objdump es otro buen en Linux.
fuente
Si es un archivo DLL de Windows y su sistema operativo es Linux, utilice winedump :
fuente
En * nix verifique nm. En Windows use el programa Dependency Walker
fuente
nm --defined-only -g something.soimprimirá los símbolos que están definidos en la biblioteca y los símbolos externos, que es probablemente lo que quiere el OP.ver hombre nm
fuente
Utilizar:
nm --demangle <libname>.sofuente
nm: /usr/lib/i386-linux-gnu/libtemplates_parser.so.11.6: no symbols.readelfo la-Dbandera funciona.El modo multiplataforma (no solo multiplataforma en sí, sino que también funciona, como mínimo, con ambos
*.soy*.dll) está utilizando el marco de ingeniería inversa radare2 . P.ej:Como
rabin2beneficio adicional, reconoce el cambio de nombre de C ++, por ejemplo (y también con el.soarchivo) :Funciona también con archivos de objetos:
fuente
Puedes usar gnu objdump.
objdump -p your.dll. Luego desplácese al.edatacontenido de la sección y encontrará las funciones exportadas en[Ordinal/Name Pointer] Table.fuente
Por lo general, también tendrá un archivo de encabezado que incluya en su código para acceder a los símbolos.
fuente