diff --git a/Sandboxie/common/NtCRT/x64/ntdll.def b/Sandboxie/common/NtCRT/x64/ntdll.def new file mode 100644 index 00000000..40cbc7c4 --- /dev/null +++ b/Sandboxie/common/NtCRT/x64/ntdll.def @@ -0,0 +1,171 @@ +EXPORTS +__C_specific_handler +__chkstk +__isascii +__iscsym +__iscsymf +__misaligned_access +__toascii +_atoi64 +_fltused +_i64toa +_i64toa_s +_i64tow +_i64tow_s +_itoa +_itoa_s +_itow +_itow_s +_lfind +_local_unwind +_ltoa +_ltoa_s +_ltow +_ltow_s +_makepath_s +_memccpy +_memicmp +_setjmp +_setjmpex +_snprintf +_snprintf_s +_snscanf_s +_snwprintf +_snwprintf_s +_snwscanf_s +_splitpath +_splitpath_s +_strcmpi +_stricmp +_strlwr +_strnicmp +_strnset_s +_strset_s +_strupr +_swprintf +_ui64toa +_ui64toa_s +_ui64tow +_ui64tow_s +_ultoa +_ultoa_s +_ultow +_ultow_s +_vscwprintf +_vsnprintf +_vsnprintf_s +_vsnwprintf +_vsnwprintf_s +_vswprintf +_wcsicmp +_wcslwr +_wcsnicmp +_wcsnset_s +_wcsset_s +_wcstoui64 +_wcsupr +_wmakepath_s +_wsplitpath_s +_wtoi +_wtoi64 +_wtol +abs +atan +atoi +atol +bsearch +ceil +cos +fabs +floor +isalnum +isalpha +iscntrl +isdigit +isgraph +islower +isprint +ispunct +isspace +isupper +iswalpha +iswctype +iswdigit +iswlower +iswspace +iswxdigit +isxdigit +labs +log +longjmp +mbstowcs +memchr +memcmp +memcpy +memcpy_s +memmove +memmove_s +memset +pow +qsort +sin +sprintf +sprintf_s +sqrt +sscanf +sscanf_s +strcat +strcat_s +strchr +strcmp +strcpy +strcpy_s +strcspn +strlen +strncat +strncat_s +strncmp +strncpy +strncpy_s +strnlen +strpbrk +strrchr +strspn +strstr +strtok_s +strtol +strtoul +swprintf +swprintf_s +swscanf_s +tan +tolower +toupper +towlower +towupper +vDbgPrintEx +vDbgPrintExWithPrefix +vsprintf +vsprintf_s +vswprintf_s +wcscat +wcscat_s +wcschr +wcscmp +wcscpy +wcscpy_s +wcscspn +wcslen +wcsncat +wcsncat_s +wcsncmp +wcsncpy +wcsncpy_s +wcsnlen +wcspbrk +wcsrchr +wcsspn +wcsstr +wcstol +wcstombs +wcstoul diff --git a/Sandboxie/common/except_handler3.asm b/Sandboxie/common/NtCRT/x86/except_handler3.asm similarity index 89% rename from Sandboxie/common/except_handler3.asm rename to Sandboxie/common/NtCRT/x86/except_handler3.asm index fdc6b71c..c5e17f72 100644 --- a/Sandboxie/common/except_handler3.asm +++ b/Sandboxie/common/NtCRT/x86/except_handler3.asm @@ -6,11 +6,12 @@ ; ;---------------------------------------------------------------------------- - .386 -_TEXT segment use32 para public 'CODE' - public __except_handler3 +.386 -;EXTERN __ValidateEH3RN : PROC +_TEXT segment use32 para public 'CODE' + + +public __except_handler3 ;__except_handler3 proc near @@ -136,24 +137,8 @@ __seh_longjmp_unwind@4: ;__except_handler3 endp - - -;EXTERN C P_RtlUnwind : DWORD EXTERN _RtlUnwind@16 : PROC - -;MAGIC_NUMBER1 equ 019930520h -; -;_NLG_INFO struc -; dwSig dd MAGIC_NUMBER1 -; uoffDestination dd 0 -; dwCode dd 0 -; uoffFramePointer dd 0 -;_NLG_INFO ends - -;extern __NLG_Destination:_NLG_INFO -extern __NLG_Destination: FAR - ;__global_unwind2 proc near __global_unwind2: @@ -285,15 +270,8 @@ __NLG_Dispatch: ;__global_unwind2 endp - -;EXTERN C _NtQueryVirtualMemory : DWORD EXTERN _NtQueryVirtualMemory@24: PROC -EXTERN C _nValidPages : DWORD -EXTERN C _rgValidPages : DWORD -EXTERN C _lModifying : DWORD - - ;__ValidateEH3RN proc near __ValidateEH3RN: @@ -534,6 +512,41 @@ label03: ;__ValidateEH3RN endp - _TEXT ends - end \ No newline at end of file + + +.model flat +.data + +; Global variables for __NLG_Destination +;typedef struct { +; unsigned long dwSig; +; unsigned long uoffDestination; +; unsigned long dwCode; +; unsigned long uoffFramePointer; +;} _NLG_INFO; +;_NLG_INFO _NLG_Destination = { 0x019930520, 0, 0, 0 }; +__NLG_Destination LABEL DWORD + dd 1 dup (019930520h) ; MAGIC_NUMBER1 + dd 1 dup (0) + dd 1 dup (0) + dd 1 dup (0) + public __NLG_Destination + + +; Global variables for __ValidateEH3RN +;INT _nValidPages = 0; +_nValidPages LABEL DWORD + dd 1 dup (0) + public _nValidPages +;PVOID _rgValidPages[0x10] = { NULL }; +_rgValidPages LABEL DWORD + dd 16 dup (0) + public _rgValidPages +;BOOL _lModifying = FALSE; +_lModifying LABEL DWORD + dd 1 dup (0) + public _lModifying + + +end \ No newline at end of file diff --git a/Sandboxie/common/NtCRT/x86/ntdll.def b/Sandboxie/common/NtCRT/x86/ntdll.def new file mode 100644 index 00000000..2ebdac02 --- /dev/null +++ b/Sandboxie/common/NtCRT/x86/ntdll.def @@ -0,0 +1,184 @@ +EXPORTS +_CIcos +_CIlog +_CIpow +_CIsin +_CIsqrt +__isascii +__iscsym +__iscsymf +__toascii +_alldiv +_alldvrm +_allmul +_alloca_probe +_alloca_probe_16 +_alloca_probe_8 +_allrem +_allshl +_allshr +_atoi64 +_aulldiv +_aulldvrm +_aullrem +_aullshr +_chkstk +_fltused +_ftol +_i64toa +_i64toa_s +_i64tow +_i64tow_s +_itoa +_itoa_s +_itow +_itow_s +_lfind +_ltoa +_ltoa_s +_ltow +_ltow_s +_makepath_s +_memccpy +_memicmp +_snprintf +_snprintf_s +_snscanf_s +_snwprintf +_snwprintf_s +_snwscanf_s +_splitpath +_splitpath_s +_strcmpi +_stricmp +_strlwr +_strnicmp +_strnset_s +_strset_s +_strupr +_swprintf +_ui64toa +_ui64toa_s +_ui64tow +_ui64tow_s +_ultoa +_ultoa_s +_ultow +_ultow_s +_vscwprintf +_vsnprintf +_vsnprintf_s +_vsnwprintf +_vsnwprintf_s +_vswprintf +_wcsicmp +_wcslwr +_wcsnicmp +_wcsnset_s +_wcsset_s +_wcstoui64 +_wcsupr +_wmakepath_s +_wsplitpath_s +_wtoi +_wtoi64 +_wtol +abs +atan +atoi +atol +bsearch +ceil +cos +fabs +floor +isalnum +isalpha +iscntrl +isdigit +isgraph +islower +isprint +ispunct +isspace +isupper +iswalpha +iswctype +iswdigit +iswlower +iswspace +iswxdigit +isxdigit +labs +log +mbstowcs +memchr +memcmp +memcpy +memcpy_s +memmove +memmove_s +memset +pow +qsort +sin +sprintf +sprintf_s +sqrt +sscanf +sscanf_s +strcat +strcat_s +strchr +strcmp +strcpy +strcpy_s +strcspn +strlen +strncat +strncat_s +strncmp +strncpy +strncpy_s +strnlen +strpbrk +strrchr +strspn +strstr +strtok_s +strtol +strtoul +swprintf +swprintf_s +swscanf_s +tan +tolower +toupper +towlower +towupper +vDbgPrintEx +vDbgPrintExWithPrefix +vsprintf +vsprintf_s +vswprintf_s +wcscat +wcscat_s +wcschr +wcscmp +wcscpy +wcscpy_s +wcscspn +wcslen +wcsncat +wcsncat_s +wcsncmp +wcsncpy +wcsncpy_s +wcsnlen +wcspbrk +wcsrchr +wcsspn +wcsstr +wcstol +wcstombs +wcstoul diff --git a/Sandboxie/common/my_ntdll.c b/Sandboxie/common/my_ntdll.c index 0f8b6356..30199803 100644 --- a/Sandboxie/common/my_ntdll.c +++ b/Sandboxie/common/my_ntdll.c @@ -23,190 +23,25 @@ typedef long NTSTATUS; #include "win32_ntddk.h" // -// Do not include any external CRT into sboxdll project. +// Do not include any external CRT into sboxdll (SbieDll.dll) project !!! // This DLL is injected early into the process start up sequence and adding dependencies may break Sandboxie. // Normally we link directly to the CRT build into ntdll.dll. -// As more recent versions of ntdll.lib are not offering many CRT functions we have to dynamically link them. -// If you are missing some expected functions we probably just not added them here yet, so just add what you need. +// +// As more recent versions of ntdll.lib are not offering many CRT functions we have to create own libs. +// See NtCRT_x64.def and NtCRT_x86.def respectively for the functions, we use a custom build step +// "lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64" +// on the apropriate def file, for x86 we use the switch /machine:x86 instead. +// +// For the x86 build we also need _except_handler3 which we have recreated in except_handler3.asm +// +// Alternatively we could link all the required functions dynamically from InitMyNtDll // int(*P_vsnwprintf)(wchar_t *_Buffer, size_t Count, const wchar_t * const, va_list Args) = NULL; int(*P_vsnprintf)(char *_Buffer, size_t Count, const char * const, va_list Args) = NULL; -#ifndef OLD_DDK -void*(__cdecl *Pmemcpy)(void* _Dst, void const* _Src, size_t _Size) = NULL; -void* __cdecl memcpy(void* _Dst, void const* _Src, size_t _Size) { return Pmemcpy(_Dst, _Src, _Size); } - -void*(__cdecl *Pmemset)(void* _Dst, int _Val, size_t _Size) = NULL; -void* __cdecl memset(void* _Dst, int _Val, size_t _Size) { return Pmemset(_Dst, _Val, _Size); } - - -wchar_t*(__cdecl *Pwcscpy)(wchar_t *dest, const wchar_t *src) = NULL; -wchar_t* __cdecl wcscpy(wchar_t *dest, const wchar_t *src) { return Pwcscpy(dest, src); } - -size_t(__cdecl *Pwcslen)(wchar_t const* _String) = NULL; -size_t __cdecl wcslen(wchar_t const* _String) { return Pwcslen(_String); } - -int(__cdecl *Pmemcmp)(void const* _Buf1, void const* _Buf2, size_t _Size) = NULL; -int __cdecl memcmp(void const* _Buf1, void const* _Buf2, size_t _Size) { return Pmemcmp(_Buf1, _Buf2, _Size); } - -wchar_t*(__cdecl *Pwcscat)(wchar_t *dest, const wchar_t *src) = NULL; -wchar_t* __cdecl wcscat(wchar_t *dest, const wchar_t *src) { return Pwcscat(dest, src); } - -int(__cdecl *Pwcscmp)(char const* _String1, char const* _String2) = NULL; -int __cdecl wcscmp(wchar_t const* _String1, wchar_t const* _String2) { return Pwcscmp(_String1, _String2); } - -size_t(__cdecl *Pstrlen)(char const*_Str) = NULL; -size_t __cdecl strlen(char const* _Str) { return Pstrlen(_Str); } - -char*(__cdecl *Pstrcpy)(char * destination, const char * source) = NULL; -char * __cdecl strcpy(char * destination, const char * source) { return Pstrcpy(destination, source); } - -int(__cdecl *Pstrcmp)(char const* _Str1, char const* _Str2) = NULL; -int __cdecl strcmp(char const* _Str1, char const* _Str2) { return Pstrcmp(_Str1, _Str2); } - - -int(__cdecl *P_wcsnicmp)(wchar_t const* _String1, wchar_t const* _String2, size_t _MaxCount) = NULL; -int __cdecl _wcsnicmp(wchar_t const* _String1, wchar_t const* _String2, size_t _MaxCount) { return P_wcsnicmp(_String1, _String2, _MaxCount); } - -wint_t(__cdecl *Ptowupper)(wint_t _C) = NULL; -wint_t __cdecl towupper(_In_ wint_t _C) { return Ptowupper(_C); } - -wint_t(__cdecl *Ptowlower)(wint_t _C) = NULL; -wint_t __cdecl towlower(_In_ wint_t _C) { return Ptowlower(_C); } - -int(__cdecl *Piswctype)(_In_ wint_t _C, _In_ wctype_t _Type) = NULL; -int __cdecl iswctype(_In_ wint_t _C, _In_ wctype_t _Type) { return Piswctype(_C, _Type); } - -void*(__cdecl *Pmemmove)(void* _Dst, void const* _Src, size_t _Size) = NULL; -void* __cdecl memmove(void* _Dst, void const* _Src, size_t _Size) { return Pmemmove(_Dst, _Src, _Size); } - -wchar_t *(__cdecl *Pwcschr)(wchar_t const* _Str, wchar_t _Ch) = NULL; -wchar_t * __cdecl wcschr(wchar_t const* _Str, wchar_t _Ch) { return Pwcschr(_Str, _Ch); } - -wchar_t*(__cdecl *P_itow)(int value, wchar_t *buffer, int radix) = NULL; -wchar_t * __cdecl _itow(int value, wchar_t *buffer, int radix) { return P_itow(value, buffer, radix); } - -int(__cdecl *Pwcsncmp)(wchar_t const* _String1, wchar_t const* _String2, size_t _MaxCount) = NULL; -int __cdecl wcsncmp(wchar_t const* _String1, wchar_t const* _String2, size_t _MaxCount) { return Pwcsncmp(_String1, _String2, _MaxCount); } - -int(__cdecl *P_wcsicmp)(wchar_t const* _String1, wchar_t const* _String2) = NULL; -int __cdecl _wcsicmp(wchar_t const* _String1, wchar_t const* _String2) { return P_wcsicmp(_String1, _String2); } - -wchar_t *(__cdecl *Pwcsrchr)(wchar_t const* _Str, wchar_t _Ch) = NULL; -wchar_t * __cdecl wcsrchr(wchar_t const* _Str, wchar_t _Ch) { return Pwcsrchr(_Str, _Ch); } - -wchar_t *(__cdecl *Pwcsstr)(wchar_t const* _Str, wchar_t const* _SubStr) = NULL; -wchar_t * __cdecl wcsstr(wchar_t const* _Str, wchar_t const* _SubStr) { return Pwcsstr(_Str, _SubStr); } - -wchar_t*(__cdecl *P_wcslwr)(wchar_t *string) = NULL; -wchar_t *__cdecl _wcslwr(wchar_t *string) { return P_wcslwr(string); } - -int(__cdecl *P_stricmp)(char const* _String1, char const* _String2) = NULL; -int __cdecl _stricmp(char const* _String1, char const* _String2) { return P_stricmp(_String1, _String2); } - -long(__cdecl *Pwcstol)(wchar_t const* _String, wchar_t ** _EndPtr, int _Radix) = NULL; -long __cdecl wcstol(wchar_t const* _String, wchar_t** _EndPtr, int _Radix) { return Pwcstol(_String, _EndPtr, _Radix); } - -wchar_t*(__cdecl *Pwcsncpy)(wchar_t* dest, wchar_t const* src, size_t count) = NULL; -wchar_t* __cdecl wcsncpy(wchar_t* dest, const wchar_t* src, size_t count) { return Pwcsncpy(dest, src, count); } - -__int64(__cdecl *P_wtoi64)(wchar_t const *_String) = NULL; -__int64 __cdecl _wtoi64(wchar_t const* _String) { return P_wtoi64(_String); } - -char*(__cdecl *Pstrchr)(const char *s, int c) = NULL; -char* __cdecl strchr(const char *s, int c) { return Pstrchr(s, c); } - -int(__cdecl *Pstrncmp)(const char * str1, const char * str2, size_t num); -int __cdecl strncmp(const char * str1, const char * str2, size_t num) { return Pstrncmp(str1, str2, num); } - -unsigned long(__cdecl *Pwcstoul)(wchar_t const* _String, wchar_t ** _EndPtr, int _Radix) = NULL; -unsigned long __cdecl wcstoul(wchar_t const* _String, wchar_t** _EndPtr, int _Radix) { return Pwcstoul(_String, _EndPtr, _Radix); } - -int(__cdecl *Ptolower)(int _C) = NULL; -int __cdecl tolower(int _C) { return Ptolower(_C); } - -int(__cdecl *P_wtoi)(wchar_t const *_String) = NULL; -int __cdecl _wtoi(wchar_t const* _String) { return P_wtoi(_String); } - -char *(__cdecl *Pstrstr)(char const* _Str, char const* _SubStr) = NULL; -char * __cdecl strstr(char const* _Str, char const* _SubStr) { return Pstrstr(_Str, _SubStr); } - -char*(__cdecl *P_strlwr)(const* str) = NULL; -char* __cdecl _strlwr(char* str) { return P_strlwr(str); } - -#ifdef _WIN64 -EXCEPTION_DISPOSITION(__cdecl *P__C_specific_handler)(struct _EXCEPTION_RECORD *ExceptionRecord, void* EstablisherFrame, struct _CONTEXT* ContextRecord, struct _DISPATCHER_CONTEXT *DispatcherContext) = NULL; -EXCEPTION_DISPOSITION __cdecl __C_specific_handler(struct _EXCEPTION_RECORD *ExceptionRecord, void* EstablisherFrame, struct _CONTEXT* ContextRecord, struct _DISPATCHER_CONTEXT *DispatcherContext) { - return P__C_specific_handler(ExceptionRecord, EstablisherFrame, ContextRecord, DispatcherContext); -} - -ULONG(__cdecl *P__chkstk)() = NULL; -ULONG __cdecl __chkstk() { return P__chkstk(); } -#else - -// Global variables for __NLG_Destination -typedef struct { - unsigned long dwSig; - unsigned long uoffDestination; - unsigned long dwCode; - unsigned long uoffFramePointer; -} _NLG_INFO; -_NLG_INFO _NLG_Destination = { 0x019930520, 0, 0, 0 }; - -// Global variables for __ValidateEH3RN -INT _nValidPages = 0; -PVOID _rgValidPages[0x10] = { NULL }; -BOOL _lModifying = FALSE; - -#endif -#endif - void InitMyNtDll(HMODULE Ntdll) { *(FARPROC*)&P_vsnwprintf = GetProcAddress(Ntdll, "_vsnwprintf"); *(FARPROC*)&P_vsnprintf = GetProcAddress(Ntdll, "_vsnprintf"); - -#ifndef OLD_DDK - - *(FARPROC*)&Pmemcpy = GetProcAddress(Ntdll, "memcpy"); - *(FARPROC*)&Pmemset = GetProcAddress(Ntdll, "memset"); - *(FARPROC*)&Pwcscpy = GetProcAddress(Ntdll, "wcscpy"); - *(FARPROC*)&Pwcslen = GetProcAddress(Ntdll, "wcslen"); - *(FARPROC*)&Pmemcmp = GetProcAddress(Ntdll, "memcmp"); - *(FARPROC*)&Pwcscat = GetProcAddress(Ntdll, "wcscat"); - *(FARPROC*)&Pwcscmp = GetProcAddress(Ntdll, "wcscmp"); - *(FARPROC*)&Pstrlen = GetProcAddress(Ntdll, "strlen"); - *(FARPROC*)&Pstrcpy = GetProcAddress(Ntdll, "strcpy"); - *(FARPROC*)&Pstrcmp = GetProcAddress(Ntdll, "strcmp"); - *(FARPROC*)&P_wcsnicmp = GetProcAddress(Ntdll, "_wcsnicmp"); - *(FARPROC*)&Ptowupper = GetProcAddress(Ntdll, "towupper"); - *(FARPROC*)&Ptowlower = GetProcAddress(Ntdll, "towlower"); - *(FARPROC*)&Piswctype = GetProcAddress(Ntdll, "iswctype"); - *(FARPROC*)&Pmemmove = GetProcAddress(Ntdll, "memmove"); - *(FARPROC*)&Pwcschr = GetProcAddress(Ntdll, "wcschr"); - *(FARPROC*)&P_itow = GetProcAddress(Ntdll, "_itow"); - *(FARPROC*)&Pwcsncmp = GetProcAddress(Ntdll, "wcsncmp"); - *(FARPROC*)&P_wcsicmp = GetProcAddress(Ntdll, "_wcsicmp"); - *(FARPROC*)&Pwcsrchr = GetProcAddress(Ntdll, "wcsrchr"); - *(FARPROC*)&Pwcsstr = GetProcAddress(Ntdll, "wcsstr"); - *(FARPROC*)&P_wcslwr = GetProcAddress(Ntdll, "_wcslwr"); - *(FARPROC*)&P_stricmp = GetProcAddress(Ntdll, "_stricmp"); - *(FARPROC*)&Pwcstol = GetProcAddress(Ntdll, "wcstol"); - *(FARPROC*)&Pwcsncpy = GetProcAddress(Ntdll, "wcsncpy"); - *(FARPROC*)&P_wtoi64 = GetProcAddress(Ntdll, "_wtoi64"); - *(FARPROC*)&Pstrchr = GetProcAddress(Ntdll, "strchr"); - *(FARPROC*)&Pstrncmp = GetProcAddress(Ntdll, "strncmp"); - *(FARPROC*)&Pwcstoul = GetProcAddress(Ntdll, "wcstoul"); - *(FARPROC*)&Ptolower = GetProcAddress(Ntdll, "tolower"); - *(FARPROC*)&P_wtoi = GetProcAddress(Ntdll, "_wtoi"); - *(FARPROC*)&Pstrstr = GetProcAddress(Ntdll, "strstr"); - *(FARPROC*)&P_strlwr = GetProcAddress(Ntdll, "_strlwr"); - -#ifdef _WIN64 - *(FARPROC*)&P__C_specific_handler = GetProcAddress(Ntdll, "__C_specific_handler"); - *(FARPROC*)&P__chkstk = GetProcAddress(Ntdll, "__chkstk"); -#endif - -#endif } diff --git a/Sandboxie/core/dll/SboxDll.vcxproj b/Sandboxie/core/dll/SboxDll.vcxproj index 1fdc2771..c6931d95 100644 --- a/Sandboxie/core/dll/SboxDll.vcxproj +++ b/Sandboxie/core/dll/SboxDll.vcxproj @@ -22,7 +22,7 @@ Win32Proj SboxDll {8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4} - 10.0 + 8.1 @@ -30,28 +30,28 @@ true false Unicode - v142 + v140 DynamicLibrary true false Unicode - v142 + v140 DynamicLibrary false false Unicode - v142 + v140 DynamicLibrary false false Unicode - v142 + v140 @@ -71,22 +71,18 @@ .dll SbieDll - $(WindowsSDK_LibraryPath_x86) .dll SbieDll - $(WindowsSDK_LibraryPath_x64) .dll SbieDll - $(WindowsSDK_LibraryPath_x86) .dll SbieDll - $(WindowsSDK_LibraryPath_x64) @@ -375,7 +371,7 @@ - + true true Document @@ -384,6 +380,22 @@ ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath) %(ProjectDir)$(Configuration)\%(Filename).obj + + true + true + lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64 + $(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib + lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64 + $(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib + + + true + true + lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x86 + $(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib + lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x86 + $(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib + diff --git a/Sandboxie/core/dll/SboxDll.vcxproj.filters b/Sandboxie/core/dll/SboxDll.vcxproj.filters index 44a7486a..48d9ae93 100644 --- a/Sandboxie/core/dll/SboxDll.vcxproj.filters +++ b/Sandboxie/core/dll/SboxDll.vcxproj.filters @@ -233,7 +233,10 @@ hook - + + common + + common @@ -278,5 +281,8 @@ hook + + common + \ No newline at end of file