README.md
Rendering markdown...
CC = gcc
CFLAGS_SHARED = -shared -fPIC
CFLAGS_STATIC = -static
.PHONY: all clean setup
all: myso.so main evil_library/myso.so
# Build the legitimate shared object
myso.so: myso.c
$(CC) $(CFLAGS_SHARED) -o $@ $<
# Build the vulnerable binary (statically linked)
main: main.c
$(CC) $(CFLAGS_STATIC) -o $@ $< -ldl
# Build the malicious shared object (named myso.so to shadow the real one)
evil_library/myso.so: evil_library/evilso.c
$(CC) $(CFLAGS_SHARED) -o $@ $<
# Set ownership and setuid bit (requires root)
setup: main
sudo chown root:root main
sudo chmod u+s main
clean:
rm -f main myso.so myso.o evil_library/myso.so