This commit is contained in:
DavidXanatos 2020-12-04 16:47:50 +01:00
parent 64a85111a2
commit 95c8b5dc04
6 changed files with 436 additions and 215 deletions

View File

@ -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

View File

@ -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
.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

View File

@ -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

View File

@ -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
}

View File

@ -22,7 +22,7 @@
<Keyword>Win32Proj</Keyword>
<ProjectName>SboxDll</ProjectName>
<ProjectGuid>{8E0EAA5B-6F5B-E0E2-338A-453EF2B548E4}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'" Label="Configuration">
@ -30,28 +30,28 @@
<UseDebugLibraries>true</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
@ -71,22 +71,18 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName>
<LibraryPath>$(WindowsSDK_LibraryPath_x86)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">
<TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName>
<LibraryPath>$(WindowsSDK_LibraryPath_x64)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">
<TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName>
<LibraryPath>$(WindowsSDK_LibraryPath_x86)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">
<TargetExt>.dll</TargetExt>
<TargetName>SbieDll</TargetName>
<LibraryPath>$(WindowsSDK_LibraryPath_x64)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">
<ClCompile>
@ -375,7 +371,7 @@
<Midl Include="pstore.idl" />
</ItemGroup>
<ItemGroup>
<CustomBuild Include="..\..\common\except_handler3.asm">
<CustomBuild Include="..\..\common\NtCRT\x86\except_handler3.asm">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<FileType>Document</FileType>
@ -384,6 +380,22 @@
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">ml -c -Cx -nologo -Zi -Zm -Fo$(Configuration)\%(Filename).obj %(FullPath)</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">%(ProjectDir)$(Configuration)\%(Filename).obj</Outputs>
</CustomBuild>
<CustomBuild Include="..\..\common\NtCRT\x64\ntdll.def">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">true</ExcludedFromBuild>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x64</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
</CustomBuild>
<CustomBuild Include="..\..\common\NtCRT\x86\ntdll.def">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieRelease|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='SbieDebug|x64'">true</ExcludedFromBuild>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x86</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieRelease|Win32'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">lib /def:%(FullPath) /out:$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib /machine:x86</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='SbieDebug|Win32'">$(SolutionDir)Bin\$(PlatformName)\$(Configuration)\NtCRT.lib</Outputs>
</CustomBuild>
<None Include="SboxDll32.def" />
<None Include="SboxDll64.def" />
<None Include="util_32.asm">

View File

@ -233,7 +233,10 @@
<None Include="util_32.asm">
<Filter>hook</Filter>
</None>
<None Include="..\..\common\except_handler3.asm">
<None Include="..\..\common\NtCRT\x64\ntdll.def">
<Filter>common</Filter>
</None>
<None Include="..\..\common\NtCRT\x86\ntdll.def">
<Filter>common</Filter>
</None>
</ItemGroup>
@ -278,5 +281,8 @@
<CustomBuild Include="util_asm.asm">
<Filter>hook</Filter>
</CustomBuild>
<CustomBuild Include="..\..\common\NtCRT\x86\except_handler3.asm">
<Filter>common</Filter>
</CustomBuild>
</ItemGroup>
</Project>