How do I, at run-time (no LD_PRELOAD
), intercept/hook a C function like fopen()
on Linux, a la Detours for Windows? I'd like to do this from Python (hence, I'm assuming that the program is already running a CPython VM) and also reroute to Python code. I'm fine with just hooking shared library functions. I'd also like to do this without having to change the way the program is run.
One idea is to roll my own tool based on ptrace()
, or on rewriting code found with dlsym()
or in the PLT, and targeting ctypes
-generated C-callable functions, but I thought I'd ask here first. Thanks.