-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
99 lines (76 loc) · 2.94 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: lumenthi <[email protected]> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2017/12/22 14:06:43 by lumenthi #+# #+# #
# Updated: 2021/02/04 15:26:45 by lumenthi ### ########.fr #
# #
# **************************************************************************** #
.PHONY : all clean fclean re run
NAME = virus
LINKER = ld
LINKER_FLAGS = --omagic # Make .text segment RWE to simulate .data env for our virus
COMPILER = nasm
COMPILER_FLAGS = -f elf64
GREEN = '\033[4;32m'
RED = '\033[4;31m'
BLANK = '\033[0m'
YELLOW = '\033[4;33m'
CYAN = '\033[4;38;5;51m'
TICK = '\033[1;32m~\033[0m'
CROSS = '\033[1;31mx\033[0m'
###### FOLDERS ######
SRCDIR = sources
OBJDIR = objs
###### SOURCES ######
SRCS = virus.s
SOURCES = $(addprefix $(SRCDIR)/, $(SRCS))
#####################
###### OBJECTS ######
OBJS = $(addprefix $(OBJDIR)/, $(SRCS:.s=.o))
#####################
###### RUN VARIABLES ######
CLEAN_ENV = clean_env
CORRUPTED_ENV = env_corrupted
###########################
all: $(NAME)
$(NAME): $(OBJS)
@ $(LINKER) $(LINKER_FLAGS) -o $(NAME) $(OBJS)
@ printf " %b | Compiled %b%b%b\n" $(TICK) $(GREEN) $(NAME) $(BLANK)
$(OBJS): $(OBJDIR)/%.o: $(SRCDIR)/%.s
mkdir -p $(OBJDIR)
@ $(COMPILER) $(COMPILER_FLAGS) -o $@ $<
clean:
@ test -d $(OBJDIR) && \
rm -rf $(OBJDIR) && \
printf " %b | " $(TICK) && \
printf "Removed %bobjects%b folders\n" $(YELLOW) $(BLANK) \
|| (printf " %b | " $(CROSS) && \
printf "No %bobjects%b folders\n" $(YELLOW) $(BLANK))
@ test -d $(CORRUPTED_ENV) && \
rm -rf $(CORRUPTED_ENV) && \
printf " %b | " $(TICK) && \
printf "Removed %b$(CORRUPTED_ENV)%b folder\n" $(YELLOW) $(BLANK) \
|| (printf " %b | " $(CROSS) && \
printf "No %b$(CORRUPTED_ENV)%b folder\n" $(YELLOW) $(BLANK))
fclean: clean
@ test -f $(NAME) && \
rm -rf $(NAME) && \
printf " %b | " $(TICK) && \
printf "Removed %b%b%b binary\n" $(RED) $(NAME) $(BLANK) \
|| (printf " %b | " $(CROSS) && \
printf "No %b%b%b binary\n" $(RED) $(NAME) $(BLANK))
re: fclean all
run: $(NAME)
@ echo "@ Binary $(NAME) ready"
@ rm -rf $(CORRUPTED_ENV)
@ echo "@ Setting up $(CORRUPTED_ENV)..."
@ cp -R $(CLEAN_ENV) $(CORRUPTED_ENV)
@ echo "@ Moving $(NAME) in the corrupted env..."
@ mv $(NAME) $(CORRUPTED_ENV)
@ echo "@ Done setting up corrupted env"
@ echo "@ Run $(NAME) binary to begin infection !"
@ echo "@ Crash is totally normal when running the virus binary"