1. Can't the process just scrub LD_PRELOAD from its environment? Linker already done it's job at that point.
2. I'd suggest against using `strings` (let alone with sudo) on attacker controlled inputs
2. I'd suggest against using `strings` (let alone with sudo) on attacker controlled inputs
#include <stdio.h>
#include <stdlib.h>
static void begin() __attribute__((constructor));
void begin() {
unsetenv("LD_PRELOAD");
}
Build with: gcc -shared -fpie -o library.so library.c
Test: LD_PRELOAD=~/library.so env | grep LD_PRELOADUnless the ld_preload patches the process you are using to read the maps file, and gives you a false maps file.
However, on my Fedora 36 machine at least, it doesn't do so by default and I'd have to specify the `-d` flag for it to do this.