# Makefile
# Kazuya Sakai, Ph.D
# Tokyo Metropolitan University
# June 10, 2018

CC     = gcc
NASM = nasm
LD = ld
SRC_SERV = bypass_server
SRC_CLNT = bypass_client
SRC1 = tcp_bind
SRC2 = tcp_bind_asm
SRC3 = tcp_bind_shell
OPTION = -fno-stack-protector -z execstack -g
FILE   = Makefile *.txt *.c *.asm *.sh
DIR	= tcp_bind

all:bypass c asm shellcode

bypass:
	$(CC) $(OPTION) -o $(SRC_SERV) $(SRC_SERV).c
	$(CC) -o $(SRC_CLNT) $(SRC_CLNT).c

c:
	$(CC) -o $(SRC1) $(SRC1).c

asm:
	$(NASM) -f elf64 -o $(SRC2).o $(SRC2).asm
	$(LD) -o $(SRC2) $(SRC2).o
	objdump -D -M intel $(SRC2)

code:asm
	objdump -M intel -d $(SRC2) | grep '^ ' | cut -f2 | perl -pe 's/(\w{2})\s+/\\x\1/g'

shellcode:
	$(CC) $(OPTION) -o $(SRC3) $(SRC3).c

pkg:
	# directory
	if [ ! -d $(DIR) ]; then \
		mkdir $(DIR); \
	fi
	
	# copy files
	for var in $(FILE); do\
		cp $$var $(DIR)/$$var; \
	done \
	
	# tar.gz
	tar zcvf $(DIR).tar.gz $(DIR)
	rm -r $(DIR)

clean:
	rm $(SRC_SERV) $(SRC_CLNT) $(SRC1) $(SRC2) $(SRC2).o $(SRC3)
