RM=cmd /c del
CP=cmd /c copy
MAKE=make

GCC="$(MINGW)\bin\gcc"
GPP="$(MINGW)\bin\g++"
LIB="$(MINGW)\lib"
OBJ=obj
BIN=..\bin
BIN1="..\bin\Level 1"
BIN2="..\bin\Level 2"
BIN3="..\bin\Level 3"
BIN4="..\bin\Level 4"
BIN5="..\bin\Level 5"
BIN6="..\bin\Level 6"
BIN7="..\bin\Level 7"
BIN8="..\bin\Level 8"
BIN9="..\bin\Level 9"
BIN10="..\bin\Level 10"
BINLOC=bin
CFLAGS=-O2 -masm=intel -Winline -Wall -std=c99 -U __STRICT_ANSI__ -D _WIN32_WINNT=0x0500 -D WINVER=0x0500 -c
CPPFLAGS=-O2 -masm=intel -Winline -Wall -U __STRICT_ANSI__ -c -D _WIN32_WINNT=0x0500 -D WINVER=0x0500 -c
CFLAGSXP=-O2 -masm=intel -Winline -Wall -std=c99 -U __STRICT_ANSI__ -D _WIN32_WINNT=0x0501 -D WINVER=0x0501 -c
LINKFLAGS=-mconsole -nostdlibs -Wl,--strip-all,--enable-stdcall-fixup,--kill-at
LINKGUIFLAGS=-mwindows -nostdlibs -Wl,--strip-all,--enable-stdcall-fixup,--kill-at
LINKDLLFLAGS=-Wl,--strip-all,--enable-stdcall-fixup --driver-name=gcc

LINKCOM="$(OBJ)\base64.o" "$(OBJ)\common.o" "$(OBJ)\common-hook.o" -lntdll -lws2_32
LINKCOMLEAK="$(OBJ)/common-leak.o" -lwininet -lole32
LINKCOMUNIV="$(OBJ)/common-univ.o"
LINKCOMSSDT="$(OBJ)/common-ssdt.o" -limagehlp
LINKCOMSPY="$(OBJ)/common-spy.o"

build: clean inc dep all levels

all: awft1 awft3 awft4 bitstest breakout1 breakout2 coat copycat cpil cpilsuite1 cpilsuite2 cpilsuite2dll \
     cpilsuite3 cpilsuite3dll crash1 crash2 crash3 crash4 crash5 crash6 crash7 ddetest dnstest dnstester \
     echotest echotest2 firehole firehole2 fireholedll \
     flank ghost jumper kernel1 kernel1b kernel2 kernel3 kernel4 kernel4b kernel5 \
     keylog1 keylog2 keylog3 keylog4 keylog5 keylog6 keylog7 \
     kill1 kill2 kill3 kill3b kill3c kill3d kill3e kill3f kill4 kill5 kill6 kill7 kill8 kill9 kill10 kill11 kill12 killdll \
     leaktest newclass osfwbypass runner runner2 schedtest schedtest2 socksnif \
     sss sss2 sss3 sss4 suspend1 suspend2 thermite tooleaky vbstest wallbreaker1 wallbreaker3 wallbreaker4 yalta

clean:
	@$(RM) $(OBJ)\*.a      $(OBJ)\*.o      $(BINLOC)\*.exe         $(BINLOC)\*.dll         2> nul &
	@$(RM) $(BIN1)\*.exe   $(BIN1)\*.dll   2> nul &
	@$(RM) $(BIN2)\*.exe   $(BIN2)\*.dll   2> nul &
	@$(RM) $(BIN3)\*.exe   $(BIN3)\*.dll   2> nul &
	@$(RM) $(BIN4)\*.exe   $(BIN4)\*.dll   2> nul &
	@$(RM) $(BIN5)\*.exe   $(BIN5)\*.dll   2> nul &
	@$(RM) $(BIN6)\*.exe   $(BIN6)\*.dll   2> nul &
	@$(RM) $(BIN7)\*.exe   $(BIN7)\*.dll   2> nul &
	@$(RM) $(BIN8)\*.exe   $(BIN8)\*.dll   2> nul &
	@$(RM) $(BIN9)\*.exe   $(BIN9)\*.dll   2> nul &
	@$(RM) $(BIN10)\*.exe  $(BIN10)\*.dll  2> nul &

inc:
	cd "include" & $(MAKE) build

dep:
	$(GCC) -MM *.c *.cpp > .dep

keylog6.o: keylog6.c
	$(GCC) $(CFLAGSXP) -o $(OBJ)/$@ $<

.c.o:
	$(GCC) $(CFLAGS) -o $(OBJ)/$@ $<

.cpp.o:
	$(GPP) $(CPPFLAGS) -o $(OBJ)/$@ $<


levels:
	@$(CP) ssts.conf                        $(BIN1) >nul
	@$(CP) $(BINLOC)\breakout2.*            $(BIN1) >nul
	@$(CP) $(BINLOC)\coat.*                 $(BIN1) >nul
	@$(CP) $(BINLOC)\echotest.*             $(BIN1) >nul
	@$(CP) $(BINLOC)\kill1.*                $(BIN1) >nul
	@$(CP) $(BINLOC)\kill2.*                $(BIN1) >nul
	@$(CP) $(BINLOC)\leaktest.*             $(BIN1) >nul
	@$(CP) $(BINLOC)\tooleaky.*             $(BIN1) >nul
	@$(CP) $(BINLOC)\yalta.*                $(BIN1) >nul
	@$(CP) $(BINLOC)\wallbreaker1.*         $(BIN1) >nul

	@$(CP) ssts.conf                        $(BIN2) >nul
	@$(CP) $(BINLOC)\awft1.*                $(BIN2) >nul
	@$(CP) $(BINLOC)\dnstest.*              $(BIN2) >nul
	@$(CP) $(BINLOC)\ghost.*                $(BIN2) >nul
	@$(CP) $(BINLOC)\jumper.*               $(BIN2) >nul
	@$(CP) $(BINLOC)\kill3.*                $(BIN2) >nul
	@$(CP) $(BINLOC)\kill3b.*               $(BIN2) >nul
	@$(CP) $(BINLOC)\kill6.*                $(BIN2) >nul
	@$(CP) $(BINLOC)\wallbreaker3.*         $(BIN2) >nul
	@$(CP) $(BINLOC)\wallbreaker4.*         $(BIN2) >nul

	@$(CP) ssts.conf                        $(BIN3) >nul
	@$(CP) drv\drv.sys                      $(BIN3) >nul
	@$(CP) $(BINLOC)\awft3.*                $(BIN3) >nul
	@$(CP) $(BINLOC)\awft4.*                $(BIN3) >nul
	@$(CP) $(BINLOC)\dnstester.*            $(BIN3) >nul
	@$(CP) $(BINLOC)\kernel1.*              $(BIN3) >nul
	@$(CP) $(BINLOC)\kill3f.*               $(BIN3) >nul
	@$(CP) $(BINLOC)\kill4.*                $(BIN3) >nul
	@$(CP) $(BINLOC)\kill7.*                $(BIN3) >nul
	@$(CP) $(BINLOC)\killdll.*              $(BIN3) >nul
	@$(CP) $(BINLOC)\sss2.*                 $(BIN3) >nul
	@$(CP) $(BINLOC)\suspend1.*             $(BIN3) >nul
	@$(CP) $(BINLOC)\thermite.*             $(BIN3) >nul

	@$(CP) ssts.conf                        $(BIN4) >nul
	@$(CP) drv\drv.sys                      $(BIN4) >nul
	@$(CP) $(BINLOC)\copycat.*              $(BIN4) >nul
	@$(CP) $(BINLOC)\cpil.*                 $(BIN4) >nul
	@$(CP) $(BINLOC)\cpilsuite1.*           $(BIN4) >nul
	@$(CP) $(BINLOC)\kernel1b.*             $(BIN4) >nul
	@$(CP) $(BINLOC)\keylog1.*              $(BIN4) >nul
	@$(CP) $(BINLOC)\kill3e.*               $(BIN4) >nul
	@$(CP) $(BINLOC)\kill8.*                $(BIN4) >nul
	@$(CP) $(BINLOC)\kill9.*                $(BIN4) >nul
	@$(CP) $(BINLOC)\sss.*                  $(BIN4) >nul
	@$(CP) $(BINLOC)\suspend2.*             $(BIN4) >nul

	@$(CP) ssts.conf                        $(BIN5) >nul
	@$(CP) drv\drv.sys                      $(BIN5) >nul
	@$(CP) drv\drv.sys                      $(BIN5)\drv2.sys >nul
	@$(CP) $(BINLOC)\breakout1.*            $(BIN5) >nul
	@$(CP) $(BINLOC)\crash1.*               $(BIN5) >nul
	@$(CP) $(BINLOC)\crash2.*               $(BIN5) >nul
	@$(CP) $(BINLOC)\crash3.*               $(BIN5) >nul
	@$(CP) $(BINLOC)\crash4.*               $(BIN5) >nul
	@$(CP) $(BINLOC)\kernel2.*              $(BIN5) >nul
	@$(CP) $(BINLOC)\kernel3.*              $(BIN5) >nul
	@$(CP) $(BINLOC)\cpilsuite2.*           $(BIN5) >nul
	@$(CP) $(BINLOC)\cpilsuite2dll.*        $(BIN5) >nul
	@$(CP) $(BINLOC)\keylog2.*              $(BIN5) >nul
	@$(CP) $(BINLOC)\kill3c.*               $(BIN5) >nul
	@$(CP) $(BINLOC)\kill3d.*               $(BIN5) >nul
	@$(CP) $(BINLOC)\vbstest.*              $(BIN5) >nul

	@$(CP) ssts.conf                        $(BIN6) >nul
	@$(CP) drv\drv.sys                      $(BIN6) >nul
	@$(CP) $(BINLOC)\cpilsuite3.*           $(BIN6) >nul
	@$(CP) $(BINLOC)\cpilsuite3dll.*        $(BIN6) >nul
	@$(CP) $(BINLOC)\crash5.*               $(BIN6) >nul
	@$(CP) $(BINLOC)\crash6.*               $(BIN6) >nul
	@$(CP) $(BINLOC)\ddetest.*              $(BIN6) >nul
	@$(CP) $(BINLOC)\echotest2.*            $(BIN6) >nul
	@$(CP) $(BINLOC)\flank.*                $(BIN6) >nul
	@$(CP) $(BINLOC)\firehole.*             $(BIN6) >nul
	@$(CP) $(BINLOC)\fireholedll.*          $(BIN6) >nul
	@$(CP) $(BINLOC)\kernel4.*              $(BIN6) >nul
	@$(CP) $(BINLOC)\keylog3.*              $(BIN6) >nul
	@$(CP) $(BINLOC)\keylog4.*              $(BIN6) >nul
	@$(CP) $(BINLOC)\kill10.*               $(BIN6) >nul
	@$(CP) $(BINLOC)\kill11.*               $(BIN6) >nul
	@$(CP) $(BINLOC)\killdll.*              $(BIN6) >nul
	@$(CP) $(BINLOC)\runner.*               $(BIN6) >nul

	@$(CP) ssts.conf                        $(BIN7) >nul
	@$(CP) $(BINLOC)\bitstest.*             $(BIN7) >nul
	@$(CP) $(BINLOC)\firehole2.*            $(BIN7) >nul
	@$(CP) $(BINLOC)\fireholedll.*          $(BIN7) >nul
	@$(CP) $(BINLOC)\keylog5.*              $(BIN7) >nul
	@$(CP) $(BINLOC)\keylog6.*              $(BIN7) >nul
	@$(CP) $(BINLOC)\kill12.*               $(BIN7) >nul
	@$(CP) $(BINLOC)\runner2.*              $(BIN7) >nul
	@$(CP) $(BINLOC)\osfwbypass.*           $(BIN7) >nul
	@$(CP) $(BINLOC)\schedtest.*            $(BIN7) >nul
	@$(CP) $(BINLOC)\sss3.*                 $(BIN7) >nul

	@$(CP) ssts.conf                        $(BIN8) >nul
	@$(CP) drv\drv.sys                      $(BIN8) >nul
	@$(CP) $(BINLOC)\kernel4b.*             $(BIN8) >nul
	@$(CP) $(BINLOC)\kernel5.*              $(BIN8) >nul
	@$(CP) $(BINLOC)\keylog7.*              $(BIN8) >nul
	@$(CP) $(BINLOC)\kill5.*                $(BIN8) >nul
	@$(CP) $(BINLOC)\newclass.*             $(BIN8) >nul
	@$(CP) $(BINLOC)\schedtest2.*           $(BIN8) >nul
	@$(CP) $(BINLOC)\socksnif.*             $(BIN8) >nul
	@$(CP) $(BINLOC)\sss4.*                 $(BIN8) >nul

	@$(CP) ssts.conf                        $(BIN9) >nul
	@$(CP) $(BINLOC)\crash7.*               $(BIN9) >nul

	@$(CP) ssts.conf                        $(BIN10) >nul

-include .dep


awft1: awft1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOMLEAK) $(LINKCOM)

awft3: awft3.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOMLEAK) $(LINKCOM)

awft4: awft4.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOMLEAK) $(LINKCOM)

bitstest: bitstest.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM) -lole32

breakout1: breakout1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

breakout2: breakout2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM) -lole32

coat: coat.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

copycat: copycat.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOMLEAK) $(LINKCOM)

cpil: cpil.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOMLEAK) $(LINKCOM)

cpilsuite1: cpilsuite1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSSDT) $(LINKCOMUNIV) $(LINKCOMLEAK) $(LINKCOM)

cpilsuite2: cpilsuite2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

cpilsuite2dll: cpilsuite2dll.o
	$(GCC) $(LINKDLLFLAGS) -shared -o $(BINLOC)/$@.dll -Wl,--out-implib,$(OBJ)/$@.a,--image-base,0x39310000 $@.def $(OBJ)/$@.o $(LINKCOMLEAK) $(LINKCOM)

cpilsuite3: cpilsuite3.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

cpilsuite3dll: cpilsuite3dll.o
	$(GCC) $(LINKDLLFLAGS) -shared -o $(BINLOC)/$@.dll -Wl,--out-implib,$(OBJ)/$@.a,--image-base,0x39320000 $@.def $(OBJ)/$@.o $(LINKCOMLEAK) $(LINKCOM)

crash1: crash1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

crash2: crash2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

crash3: crash3.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

crash4: crash4.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

crash5: crash5.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

crash6: crash6.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

crash7: crash7.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

ddetest: ddetest.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

dnstest: dnstest.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOM)

dnstester: dnstester.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM) -ldnsapi

echotest: echotest.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

echotest2: echotest2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

firehole: firehole.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

firehole2: firehole2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

fireholedll: fireholedll.o
	$(GCC) $(LINKDLLFLAGS) -shared -o $(BINLOC)/$@.dll -Wl,--out-implib,$(OBJ)/$@.a,--image-base,0x39210000 $@.def $(OBJ)/$@.o $(LINKCOMLEAK) $(LINKCOM)

flank: flank.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM) -luuid -lole32 -loleaut32

ghost: ghost.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

jumper: jumper.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

kernel1: kernel1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kernel1b: kernel1b.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kernel2: kernel2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kernel3: kernel3.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kernel4: kernel4.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kernel4b: kernel4b.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM) -lshlwapi

kernel5: kernel5.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSSDT) $(LINKCOM)

keylog1: keylog1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSPY) $(LINKCOM)

keylog2: keylog2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSPY) $(LINKCOM)

keylog3: keylog3.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSPY) $(LINKCOM)

keylog4: keylog4.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSPY) $(LINKCOM)

keylog5: keylog5.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSPY) $(LINKCOM)

keylog6: keylog6.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSPY) $(LINKCOM)

keylog7: keylog7.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSPY) $(LINKCOM) -luser32 -lole32 -ldinput -ldxguid

kill1: kill1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill2: kill2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill3: kill3.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill3b: kill3b.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill3c: kill3c.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill3d: kill3d.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill3e: kill3e.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill3f: kill3f.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill4: kill4.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill5: kill5.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill6: kill6.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill7: kill7.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill8: kill8.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOM)

kill9: kill9.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOM)

kill10: kill10.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill11: kill11.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

kill12: kill12.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

killdll: killdll.o
	$(GCC) $(LINKDLLFLAGS) -shared -o $(BINLOC)/$@.dll -Wl,--out-implib,$(OBJ)/$@.a,--image-base,0x39110000 $@.def $(OBJ)/$@.o $(LINKCOM)

leaktest: leaktest.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOM)

newclass: newclass.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM) -luuid -lole32 -loleaut32

osfwbypass: osfwbypass.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM) -luuid -lole32 -loleaut32

runner: runner.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

runner2: runner2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

schedtest: schedtest.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM) -luuid -lole32 -loleaut32

schedtest2: schedtest2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM) -lnetapi32

socksnif : socksnif.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMSPY) $(LINKCOM)

sss: sss.o
	$(GCC) $(LINKGUIFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

sss2: sss2.o
	$(GCC) $(LINKGUIFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

sss3: sss3.o
	$(GCC) $(LINKGUIFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

sss4: sss4.o
	$(GCC) $(LINKGUIFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

suspend1: suspend1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

suspend2: suspend2.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)

thermite: thermite.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMUNIV) $(LINKCOMLEAK) $(LINKCOM)

tooleaky: tooleaky.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

vbstest: vbstest.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

wallbreaker1: wallbreaker1.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

wallbreaker3: wallbreaker3.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

wallbreaker4: wallbreaker4.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOMLEAK) $(LINKCOM)

yalta: yalta.o
	$(GCC) $(LINKFLAGS) $(OBJ)/$@.o -o $(BINLOC)/$@ $(LINKCOM)
