diff options
| author | eroen | 2015-07-10 22:59:24 +0200 |
|---|---|---|
| committer | eroen | 2015-07-10 22:59:24 +0200 |
| commit | 1ff4e0626696cce79347cea1f8af03ff0df5c3fd (patch) | |
| tree | 434448c9801009a8365e67a3130571042468c3f2 /libdynsymlink.c | |
| download | dynsymlink-1ff4e0626696cce79347cea1f8af03ff0df5c3fd.tar.gz dynsymlink-1ff4e0626696cce79347cea1f8af03ff0df5c3fd.tar.bz2 dynsymlink-1ff4e0626696cce79347cea1f8af03ff0df5c3fd.tar.xz | |
Simple LD_PRELOAD demo
Diffstat (limited to 'libdynsymlink.c')
| -rw-r--r-- | libdynsymlink.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/libdynsymlink.c b/libdynsymlink.c new file mode 100644 index 0000000..f1c225c --- /dev/null +++ b/libdynsymlink.c @@ -0,0 +1,23 @@ +#define _GNU_SOURCE +#include <dlfcn.h> + +#include <stdio.h> + +static int dynsym_initialized = 0; +static int (*real_printf) (const char *); + +void dynsym_init(void) +{ + if(!dynsym_initialized) { + real_printf = dlsym(RTLD_NEXT, "printf"); + dynsym_initialized = 1; + } +} + +int printf(const char *__restrict __format, ...) +{ + dynsym_init(); + (*real_printf)("This is libdynsymlink printf\n"); + return (*real_printf)(__format); +} + |
