|
| 1 | +############################################################################## |
| 2 | +## |
| 3 | +## API Extention to Measure time slept. |
| 4 | +## |
| 5 | +## Microsoft Research Detours Package |
| 6 | +## |
| 7 | +## Copyright (c) Microsoft Corporation. All rights reserved. |
| 8 | +## |
| 9 | + |
| 10 | +!include ..\common.mak |
| 11 | + |
| 12 | +LIBS=$(LIBS) kernel32.lib |
| 13 | +CFLAGS=$(CFLAGS) /std:c++14 |
| 14 | + |
| 15 | +############################################################################## |
| 16 | + |
| 17 | +all: dirs \ |
| 18 | + $(BIND)\simple_safe$(DETOURS_BITS).dll \ |
| 19 | + $(BIND)\sleep5.exe \ |
| 20 | + \ |
| 21 | +!IF $(DETOURS_SOURCE_BROWSING)==1 |
| 22 | + $(OBJD)\simple_safe$(DETOURS_BITS).bsc \ |
| 23 | + $(OBJD)\sleep5.bsc \ |
| 24 | +!ENDIF |
| 25 | + option |
| 26 | + |
| 27 | +############################################################################## |
| 28 | + |
| 29 | +dirs: |
| 30 | + @if not exist $(BIND) mkdir $(BIND) && echo. Created $(BIND) |
| 31 | + @if not exist $(OBJD) mkdir $(OBJD) && echo. Created $(OBJD) |
| 32 | + |
| 33 | +$(OBJD)\simple_safe.obj : simple_safe.cpp |
| 34 | + |
| 35 | +$(OBJD)\simple_safe.res : simple_safe.rc |
| 36 | + |
| 37 | +$(BIND)\simple_safe$(DETOURS_BITS).dll $(BIND)\simple_safe$(DETOURS_BITS).lib: \ |
| 38 | + $(OBJD)\simple_safe.obj $(OBJD)\simple_safe.res $(DEPS) |
| 39 | + cl /LD $(CFLAGS) /Fe$(@R).dll /Fd$(@R).pdb \ |
| 40 | + $(OBJD)\simple_safe.obj $(OBJD)\simple_safe.res \ |
| 41 | + /link $(LINKFLAGS) /subsystem:console \ |
| 42 | + /export:DetourFinishHelperProcess,@1,NONAME \ |
| 43 | + /export:TimedSleepEx \ |
| 44 | + $(LIBS) |
| 45 | + |
| 46 | +$(OBJD)\simple_safe$(DETOURS_BITS).bsc : $(OBJD)\simple_safe.obj |
| 47 | + bscmake /v /n /o $@ $(OBJD)\simple_safe.sbr |
| 48 | + |
| 49 | +$(OBJD)\sleep5.obj : sleep5.cpp |
| 50 | + |
| 51 | +$(BIND)\sleep5.exe : $(OBJD)\sleep5.obj $(DEPS) |
| 52 | + cl $(CFLAGS) /Fe$@ /Fd$(@R).pdb $(OBJD)\sleep5.obj \ |
| 53 | + /link $(LINKFLAGS) $(LIBS) \ |
| 54 | + /subsystem:console |
| 55 | + |
| 56 | +$(OBJD)\sleep5.bsc : $(OBJD)\sleep5.obj |
| 57 | + bscmake /v /n /o $@ $(OBJD)\sleep5.sbr |
| 58 | + |
| 59 | +############################################################################## |
| 60 | + |
| 61 | +clean: |
| 62 | + -del *~ 2>nul |
| 63 | + -del $(BIND)\simple_safe*.* 2>nul |
| 64 | + -del $(BIND)\sleep5.* 2>nul |
| 65 | + -rmdir /q /s $(OBJD) 2>nul |
| 66 | + |
| 67 | +realclean: clean |
| 68 | + -rmdir /q /s $(OBJDS) 2>nul |
| 69 | + |
| 70 | +############################################### Install non-bit-size binaries. |
| 71 | + |
| 72 | +!IF "$(DETOURS_OPTION_PROCESSOR)" != "" |
| 73 | + |
| 74 | +$(OPTD)\simple_safe$(DETOURS_OPTION_BITS).dll: |
| 75 | +$(OPTD)\simple_safe$(DETOURS_OPTION_BITS).pdb: |
| 76 | + |
| 77 | +$(BIND)\simple_safe$(DETOURS_OPTION_BITS).dll : $(OPTD)\simple_safe$(DETOURS_OPTION_BITS).dll |
| 78 | + @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). |
| 79 | +$(BIND)\simple_safe$(DETOURS_OPTION_BITS).pdb : $(OPTD)\simple_safe$(DETOURS_OPTION_BITS).pdb |
| 80 | + @if exist $? copy /y $? $(BIND) >nul && echo $@ copied from $(DETOURS_OPTION_PROCESSOR). |
| 81 | + |
| 82 | +option: \ |
| 83 | + $(BIND)\simple_safe$(DETOURS_OPTION_BITS).dll \ |
| 84 | + $(BIND)\simple_safe$(DETOURS_OPTION_BITS).pdb \ |
| 85 | + |
| 86 | +!ELSE |
| 87 | + |
| 88 | +option: |
| 89 | + |
| 90 | +!ENDIF |
| 91 | + |
| 92 | +############################################################################## |
| 93 | + |
| 94 | +test: all |
| 95 | + @echo -------- Reseting test binaries to initial state. --------------------- |
| 96 | + $(BIND)\setdll.exe -r $(BIND)\sleep5.exe |
| 97 | + @echo. |
| 98 | + @echo -------- Should not load simple_safe$(DETOURS_BITS).dll ----------------------------------- |
| 99 | + $(BIND)\sleep5.exe |
| 100 | + @echo. |
| 101 | + @echo -------- Adding simple_safe$(DETOURS_BITS).dll to sleep5.exe ------------------------------ |
| 102 | + $(BIND)\setdll.exe -d:$(BIND)\simple_safe$(DETOURS_BITS).dll $(BIND)\sleep5.exe |
| 103 | + @echo. |
| 104 | + @echo -------- Should load simple_safe$(DETOURS_BITS).dll statically ---------------------------- |
| 105 | + $(BIND)\sleep5.exe |
| 106 | + @echo. |
| 107 | + @echo -------- Removing simple_safe$(DETOURS_BITS).dll from sleep5.exe -------------------------- |
| 108 | + $(BIND)\setdll.exe -r $(BIND)\sleep5.exe |
| 109 | + @echo. |
| 110 | + @echo -------- Should not load simple_safe$(DETOURS_BITS).dll ----------------------------------- |
| 111 | + $(BIND)\sleep5.exe |
| 112 | + @echo. |
| 113 | + @echo -------- Should load simple_safe$(DETOURS_BITS).dll dynamically using withdll.exe---------- |
| 114 | + $(BIND)\withdll.exe -d:$(BIND)\simple_safe$(DETOURS_BITS).dll $(BIND)\sleep5.exe |
| 115 | + @echo. |
| 116 | + |
| 117 | +debug: all |
| 118 | + windbg -o $(BIND)\withdll.exe -d:$(BIND)\simple_safe$(DETOURS_BITS).dll $(BIND)\sleep5.exe |
| 119 | + |
| 120 | + |
| 121 | +################################################################# End of File. |
0 commit comments