/* * print_getenv: * Makes the program calling getenv() print out the environmental variable * * Based on example here: https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/ * * Compile: gcc -shared -fPIC print_getenv.c -o print_getenv.so -ldl * Use: LD_PRELOAD the .so * */ #define _GNU_SOURCE #include #include typedef char (*orig_getenv)(const char *name); char getenv(const char *name) { printf("%s\n", name); orig_getenv og_getenv; og_getenv = (orig_getenv)dlsym(RTLD_NEXT, "getenv"); return og_getenv(name); }