1
mirror of https://github.com/rapid7/metasploit-payloads synced 2024-11-20 14:39:22 +01:00
metasploit-payloads/c/meterpreter/Makefile
2015-06-01 08:28:17 -05:00

160 lines
5.1 KiB
Makefile

# Used by 'install' target. Change this to wherever your framework checkout is.
# Doesn't have to be development. Should point to the base directory where
# msfconsole lives.
framework_dir = ../../../metasploit-framework/
# Change me if you want to build openssl and libpcap somewhere else
build_tmp = posix-meterp-build-tmp
cwd=$(shell pwd)
ROOT=$(basename $(CURDIR:%/=%))
BIONIC=$(ROOT)/source/bionic
LIBC=$(BIONIC)/libc
LIBM=$(BIONIC)/libm
COMPILED=$(BIONIC)/compiled
objects = $(COMPILED)/libc.so
objects += $(COMPILED)/libm.so
objects += $(COMPILED)/libdl.so
objects += $(COMPILED)/libcrypto.so
objects += $(COMPILED)/libssl.so
objects += $(COMPILED)/libsupport.so
objects += $(COMPILED)/libmetsrv_main.so
objects += $(COMPILED)/libpcap.so
outputs = data/meterpreter/msflinker_linux_x86.bin
outputs += data/meterpreter/ext_server_stdapi.lso
outputs += data/meterpreter/ext_server_sniffer.lso
outputs += data/meterpreter/ext_server_networkpug.lso
STD_CFLAGS = -Os -m32 -march=i386 -fno-stack-protector
STD_CFLAGS += -Wl,--hash-style=sysv
STD_CFLAGS += -lc -lm -nostdinc -nostdlib -fno-builtin -fPIC -DPIC
STD_CFLAGS += -Dwchar_t='char' -D_SIZE_T_DECLARED -DElf_Size='u_int32_t'
STD_CFLAGS += -D_BYTE_ORDER=_LITTLE_ENDIAN -D_UNIX -D__linux__ -lgcc
STD_CFLAGS += -I$(LIBC)/include
STD_CFLAGS += -I$(LIBC)/kernel/common/linux/
STD_CFLAGS += -I$(LIBC)/kernel/common/
STD_CFLAGS += -I$(LIBC)/arch-x86/include/
STD_CFLAGS += -I$(LIBC)/kernel/arch-x86/
STD_CFLAGS += -L$(COMPILED)
GCCGOLD = $(shell (echo "int main(){}" | gcc -fuse-ld=gold -o/dev/null -xc -); echo $$?)
ifeq "$(GCCGOLD)" "0"
STD_CFLAGS += -fuse-ld=gold
endif
PCAP_CFLAGS = $(STD_CFLAGS)
OSSL_CFLAGS = $(STD_CFLAGS) -I$(LIBC)/private -I$(LIBM)/include
workspace = workspace
all: $(objects) $(outputs)
include deps/libressl/Makefile
include deps/libpcap/Makefile
debug: DEBUG=true
# I'm 99% sure this is the wrong way to do this
debug: MAKE += debug
debug: all
$(COMPILED):
mkdir $(COMPILED)/
$(COMPILED)/libc.so: $(COMPILED)
@echo Building libc
@(cd source/bionic/libc && ARCH=x86 TOP=${ROOT} jam > build.log 2>&1 )
@(cd source/bionic/libc/out/x86/ && $(MAKE) -f Makefile.msf >> build.log 2>&1 && [ -f libbionic.so ])
@cp source/bionic/libc/out/x86/libbionic.so $(COMPILED)/libc.so
$(COMPILED)/libm.so:
@echo Building libm
@$(MAKE) -C $(LIBM) -f Makefile.msf > build.log 2>&1 && [ -f $(LIBM)/libm.so ]
@cp $(LIBM)/libm.so $(COMPILED)/libm.so
$(COMPILED)/libdl.so:
@echo Building libdl
@$(MAKE) -C $(BIONIC)/libdl > build.log && [ -f $(BIONIC)/libdl/libdl.so ]
@cp $(BIONIC)/libdl/libdl.so $(COMPILED)/libdl.so
data/meterpreter/msflinker_linux_x86.bin: source/server/rtld/msflinker.bin
cp source/server/rtld/msflinker.bin data/meterpreter/msflinker_linux_x86.bin
source/server/rtld/msflinker.bin: $(COMPILED)/libc.so \
$(wildcard source/server/*.h) \
$(wildcard source/server/*.c)
$(MAKE) -C source/server/rtld
$(workspace)/metsrv/libmetsrv_main.so: $(COMPILED)/libsupport.so \
$(wildcard source/server/*.h) \
$(wildcard source/server/*.c)
$(MAKE) -C $(workspace)/metsrv
$(COMPILED)/libmetsrv_main.so: $(workspace)/metsrv/libmetsrv_main.so
cp $(workspace)/metsrv/libmetsrv_main.so $(COMPILED)/libmetsrv_main.so
$(workspace)/common/libsupport.so: \
$(wildcard source/common/*.h) \
$(wildcard source/common/*.c)
$(MAKE) -C $(workspace)/common
$(COMPILED)/libsupport.so: $(workspace)/common/libsupport.so
cp $(workspace)/common/libsupport.so $(COMPILED)/libsupport.so
$(workspace)/ext_server_sniffer/ext_server_sniffer.so: \
$(wildcard source/extensions/sniffer/*.h) \
$(wildcard source/extensions/sniffer/*.c) \
$(COMPILED)/libpcap.so
$(MAKE) -C $(workspace)/ext_server_sniffer
data/meterpreter/ext_server_sniffer.lso: \
$(workspace)/ext_server_sniffer/ext_server_sniffer.so
cp $(workspace)/ext_server_sniffer/ext_server_sniffer.so \
data/meterpreter/ext_server_sniffer.lso
$(workspace)/ext_server_stdapi/ext_server_stdapi.so: \
$(wildcard source/extensions/stdapi/*.h) \
$(wildcard source/extensions/stdapi/*.c)
$(MAKE) -C $(workspace)/ext_server_stdapi
data/meterpreter/ext_server_stdapi.lso: \
$(workspace)/ext_server_stdapi/ext_server_stdapi.so
cp $(workspace)/ext_server_stdapi/ext_server_stdapi.so \
data/meterpreter/ext_server_stdapi.lso
$(workspace)/ext_server_networkpug/ext_server_networkpug.so: \
$(wildcard source/extensions/networkpug/*.h) \
$(wildcard source/extensions/networkpug/*.c)
$(MAKE) -C $(workspace)/ext_server_networkpug
data/meterpreter/ext_server_networkpug.lso: \
$(workspace)/ext_server_networkpug/ext_server_networkpug.so
cp $(workspace)/ext_server_networkpug/ext_server_networkpug.so \
data/meterpreter/ext_server_networkpug.lso
install: $(outputs)
cp $(outputs) $(framework_dir)/data/meterpreter/
clean:
rm -f $(objects)
make -C source/server/rtld/ clean
make -C $(workspace) clean
depclean:
rm -f source/bionic/lib*/*.o
find source/bionic/ -name '*.a' -print0 | xargs -0 rm -f 2>/dev/null
find source/bionic/ -name '*.so' -print0 | xargs -0 rm -f 2>/dev/null
find . -name 'build.log' | xargs rm -f
rm -f source/bionic/lib*/*.so
really-clean: clean clean-ssl clean-pcap depclean
distclean: really-clean
.PHONY: clean clean-ssl clean-pcap really-clean debug