mirror of
https://github.com/entropy-z/Kharon
synced 2026-06-06 15:34:34 +00:00
128 lines
3.2 KiB
Makefile
128 lines
3.2 KiB
Makefile
NAME := Kharon
|
|
BUILD_PATH ?= .
|
|
OBJ_PATH := $(BUILD_PATH)/Bin
|
|
|
|
CCX64 := clang++ -target x86_64-w64-mingw32
|
|
|
|
FORMAT ?= Undefined
|
|
SECTION ?= Undefined
|
|
RSRC_ID ?= Undefined
|
|
CUSTOM_SECTION_NAME ?= Undefined
|
|
ENCRYPTION_TYPE ?= Undefined
|
|
XOR_KEY ?= Undefined
|
|
INJECTION_TECHNIQUE ?= Undefined
|
|
|
|
CFLAGS := \
|
|
-Os \
|
|
-mwindows \
|
|
-nostdlib \
|
|
-s
|
|
|
|
LIBS := \
|
|
-lkernel32 \
|
|
-ladvapi32 \
|
|
-lntdll \
|
|
-lmsvcrt
|
|
|
|
DEFS := \
|
|
-D XOR_KEY='$(XOR_KEY)'
|
|
|
|
# Shellcode Section
|
|
ifeq ($(SECTION),rsrc)
|
|
DEFS += -D SHELLCODE_SECTION_LOCATION=SHELLCODE_SECTION_RSRC
|
|
DEFS += -D RSRC_ID=$(RSRC_ID)
|
|
RES_OBJ := Include/shellcode.res
|
|
else
|
|
DEFS += -D SHELLCODE_SECTION_LOCATION=SHELLCODE_SECTION_OTHER
|
|
RES_OBJ :=
|
|
endif
|
|
|
|
# Injection Technique
|
|
ifeq ($(INJECTION_TECHNIQUE),Module Stomp)
|
|
INJECTION_SRC := Source/Injection/Stomper.cc
|
|
DEFS += -D INJECTION_TECHNIQUE=INJECTION_TECHNIQUE_STOMPER
|
|
endif
|
|
|
|
ifeq ($(INJECTION_TECHNIQUE),Classic)
|
|
INJECTION_SRC := Source/Injection/Classic.cc
|
|
DEFS += -D INJECTION_TECHNIQUE=INJECTION_TECHNIQUE_CLASSIC
|
|
endif
|
|
|
|
# Encryption Type
|
|
ifeq ($(ENCRYPTION_TYPE),xor)
|
|
DEFS += -D ENCRYPTION_TYPE=ENCRYPTION_XOR
|
|
endif
|
|
|
|
ifeq ($(ENCRYPTION_TYPE),none)
|
|
DEFS += -D ENCRYPTION_TYPE=ENCRYPTION_NONE
|
|
endif
|
|
|
|
# Format
|
|
ifeq ($(FORMAT),Exe)
|
|
SRC := Source/Main/Exe.cc
|
|
OUT := $(OBJ_PATH)/$(NAME).x64.exe
|
|
XFLAGS := -Wl,-e,WinMain
|
|
endif
|
|
|
|
ifeq ($(FORMAT),Dll)
|
|
SRC := Source/Main/Dll.cc
|
|
OUT := $(OBJ_PATH)/$(NAME).x64.dll
|
|
XFLAGS := -shared
|
|
endif
|
|
|
|
ifeq ($(FORMAT),Svc)
|
|
SRC := Source/Main/Svc.cc
|
|
OUT := $(OBJ_PATH)/$(NAME).x64.svc.exe
|
|
XFLAGS := -Wl,-e,WinMain
|
|
endif
|
|
|
|
INC := Include
|
|
ENTRY := Source/Entry.cc
|
|
ENCRYPTION_SRC := Source/Encryption.cc
|
|
|
|
.PHONY: all exe dll svc build clean
|
|
|
|
all: build
|
|
|
|
exe:
|
|
@ $(MAKE) FORMAT=Exe SECTION=$(SECTION) XOR_KEY='$(XOR_KEY)' INJECTION_TECHNIQUE=$(INJECTION_TECHNIQUE) ENCRYPTION_TYPE=$(ENCRYPTION_TYPE) build
|
|
|
|
dll:
|
|
@ $(MAKE) FORMAT=Dll SECTION=$(SECTION) XOR_KEY='$(XOR_KEY)' INJECTION_TECHNIQUE=$(INJECTION_TECHNIQUE) ENCRYPTION_TYPE=$(ENCRYPTION_TYPE) build
|
|
|
|
svc:
|
|
@ $(MAKE) FORMAT=Svc SECTION=$(SECTION) XOR_KEY='$(XOR_KEY)' INJECTION_TECHNIQUE=$(INJECTION_TECHNIQUE) ENCRYPTION_TYPE=$(ENCRYPTION_TYPE) build
|
|
|
|
build: $(OBJ_PATH)
|
|
@ echo "SECTION = '$(SECTION)'"
|
|
@ echo "INJECTION = '$(INJECTION_TECHNIQUE)'"
|
|
@ echo "ENCRYPTION = '$(ENCRYPTION_TYPE)'"
|
|
@ echo "DEFS = $(DEFS)"
|
|
@ echo "RES_OBJ = '$(RES_OBJ)'"
|
|
@ echo "[*] Compiling $(FORMAT) x64..."
|
|
@ $(CCX64) \
|
|
-I $(INC) \
|
|
-o $(OUT) \
|
|
$(ENTRY) \
|
|
$(SRC) \
|
|
$(RES_OBJ) \
|
|
$(INJECTION_SRC) \
|
|
$(ENCRYPTION_SRC) \
|
|
$(CFLAGS) \
|
|
$(DEFS) \
|
|
$(XFLAGS) \
|
|
$(LIBS)
|
|
@ echo "[✓] Build completed: $(OUT)"
|
|
|
|
$(OBJ_PATH):
|
|
@ mkdir -p $(OBJ_PATH)
|
|
|
|
clean:
|
|
@ rm -f $(OBJ_PATH)/$(NAME).x64.exe \
|
|
$(OBJ_PATH)/$(NAME).x64.dll \
|
|
$(OBJ_PATH)/$(NAME).x64.svc.exe
|
|
@ rm -f $(INC)/Shellcode.h
|
|
@ rm -f $(INC)/shellcode.bin
|
|
@ rm -f $(INC)/shellcode.rc
|
|
@ rm -f $(INC)/shellcode.res
|
|
@ echo "[✓] Cleanup completed"
|