This commit is contained in:
parent
64a85111a2
commit
95c8b5dc04
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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>
|
Loading…
Reference in New Issue