stack_overflow.o: stack_overflow.s
	as -g -o stack_overflow.o stack_overflow.s

stack_overflow: stack_overflow.o
	gcc -z execstack -D_FORTIFY_SOURCE=0 -o stack_overflow stack_overflow.o
	rm -f stack_overflow.o

stack_overflow_stack_canary.o: stack_overflow_stack_canary.s
	as -g -o stack_overflow_stack_canary.o stack_overflow_stack_canary.s

stack_overflow_stack_canary: stack_overflow_stack_canary.o
	gcc -o stack_overflow_stack_canary stack_overflow_stack_canary.o
	rm -f stack_overflow_stack_canary.o

shellcode.o: shellcode.s
	as -g -o shellcode.o shellcode.s

shellcode: shellcode.o
	ld -e start -o shellcode shellcode.o
	rm -f shellcode.o

privesc.o: privesc.s
	as -g -o privesc.o privesc.s

privesc: privesc.o
	ld -e start -o privesc privesc.o
	rm -f privesc.o


all: stack_overflow stack_overflow.o stack_overflow_stack_canary stack_overflow_stack_canary.o shellcode shellcode.o privesc privesc.o

clean:
	rm -f stack_overflow
	rm -f stack_overflow.o
	rm -f stack_overflow_stack_canary
	rm -f stack_overflow_stack_canary.o
	rm -f shellcode
	rm -f shellcode.o
	rm -f privesc
	rm -f privesc.o