Slightly off-topic, but eh.
commit7173eddb5c7ce6f776306a97ec579c6397fcb5ce
authorEthereal <ethereal.visage@gmail.com>
Fri, 7 Jan 2011 04:45:54 +0000 (6 21:45 -0700)
committerEthereal <ethereal.visage@gmail.com>
Fri, 7 Jan 2011 04:45:54 +0000 (6 21:45 -0700)
tree6f64aba97ff5b5886a4a5619b64931528c3bfe9a
parentcb94703ffb51101abe3e3fa89873cbe626b55e10
Slightly off-topic, but eh.

A system that I can use to find the address that libc is loaded into with
almost perfect accuracy is basically to look through /proc/self/maps to find
anything of the form '/libc' followed by a non-alphabetic character. If no
libraries of this sort are found (or multiple), then die and ask the user to
specify the actual path on the command-line. This can be done in the monitor,
and the final path simply passed onto the informer via a configuration item
anyhow.

This should be portable and reliable enough. The only other requirement is the
offset of the function to resolve, such as calloc(). (0x75e50 in glibc 2.11,
by the way.) From there, the function pointer is trivial.