On 3/23/07, J.C. Roberts <[EMAIL PROTECTED]> wrote:
...
Unfortunately, it actually is possible to remove the typically used
function name symbols from dynamically loaded libraries (shared
objects). Stripping the function name symbols (along with debug
symbols) from shared libraries is often used in copyright protection
schemes as a way to thwart auditing and analysis. The resoning is
because some feel that the function names help with understanding the
code.

-BUT important thing to remember is the protected programs using
these libraries _only_ work because they are not calling the shared
library functions by name.

Bzzt.  Symbols in shared libraries *are* referenced by name.  There's
a completely separate symbol table used (the ".dynsym" section) by the
dynamic linker that has the information it needs.  It should be
obvious that the calling of shared library functions *is* by name, as
you can dynamically override the functions by loading other shared
libraries with the same name.  Indeed, LD_PRELOAD would be almost
useless if that wasn't true.

*Please* go read up on (at least!) the ELF standard before making
authoritative sounding statements about how shared libraries and
symbol tables work.


Philip Guenther

Reply via email to