59 lines
1.5 KiB
Makefile
59 lines
1.5 KiB
Makefile
# CC = gcc
|
|
CFLAGS = -g -zexecstack
|
|
SFLASG =
|
|
SRC = $(wildcard *.c) $(wildcard *.s)
|
|
TGT = $(subst .c,,$(subst. .S,,$(SRC)))
|
|
BUILD_DIR = build
|
|
DUMP_DIR = dump
|
|
|
|
|
|
pframe:
|
|
curl -o pframe.tgz https://dept-info.labri.fr/~thibault/SecuLog/pframe.tgz && \
|
|
tar -xf pframe.tgz &&\
|
|
rm -rf pframe.tgz
|
|
|
|
.gdbinit:
|
|
|
|
configure: pframe .gdbinit
|
|
$(shell echo "python import pframe" > .gdbinit)
|
|
|
|
$(BUILD_DIR)/%: %.c
|
|
$(shell mkdir -p $(BUILD_DIR))
|
|
$(CC) $(CFLAGS) -o $@ $<
|
|
|
|
$(BUILD_DIR)/%: %.S
|
|
$(shell mkdir -p $(BUILD_DIR))
|
|
$(CC) -g $< -o $@ -static -nostdlib
|
|
|
|
build: $(addprefix $(BUILD_DIR)/, $(TGT))
|
|
|
|
PHONY: gdb_shellcode
|
|
gdb_shellcode: build/shellcode configure
|
|
PYTHONPATH=${PWD}/pframe${PYTHONPATH:+:${PYTHONPATH}} \
|
|
setarch -R gdb ./$(BUILD_DIR)/shellcode
|
|
|
|
PHONY: gdb_anodin
|
|
gdb_anodin: build/anodin configure
|
|
PYTHONPATH=${PWD}/pframe${PYTHONPATH:+:${PYTHONPATH}} \
|
|
setarch -R gdb ./$(BUILD_DIR)/anodin
|
|
|
|
PHONY: gdb_exploit
|
|
gdb_exploit: build/exploit build/anodin configure
|
|
ifeq ($(A_ADDR),)
|
|
$(error A_ADDR must be defined, launch make gdb_anodin then run)
|
|
endif
|
|
echo '$(A_ADDR)' | ./$(BUILD_DIR)/exploit > hack.txt
|
|
PYTHONPATH=${PWD}/pframe${PYTHONPATH:+:${PYTHONPATH}} \
|
|
setarch -R gdb ./$(BUILD_DIR)/anodin --command=anodin.gdb
|
|
rm hack.txt
|
|
|
|
PHONY: opcode
|
|
opcode: build/shellcode
|
|
readelf -x .text build/shellcode | sed -e '$$ d' -e '1,2 d' \
|
|
| awk -F ' ' '{$$1=$$6=""; print $$0}' \
|
|
| tr -d '[ \n]' \
|
|
| sed 's/../0x&,/g' > opcode.txt
|
|
|
|
PHONY: clean
|
|
clean:
|
|
@rm -rf $(BUILD_DIR) pframe .gdbinit opcode.txt
|