1.1.2
This commit is contained in:
parent
e806da601b
commit
2859471549
|
@ -247,7 +247,7 @@ _FX BOOLEAN AdvApi_Init(HMODULE module)
|
||||||
// only hook SetSecurityInfo if this is Chrome. Outlook 2013 uses delayed loading and will cause infinite callbacks
|
// only hook SetSecurityInfo if this is Chrome. Outlook 2013 uses delayed loading and will cause infinite callbacks
|
||||||
// Starting with Win 10, we only want to hook ntmarta!SetSecurityInfo. Do NOT hook advapi!SetSecurityInfo. Delay loading for advapi will cause infinite recursion.
|
// Starting with Win 10, we only want to hook ntmarta!SetSecurityInfo. Do NOT hook advapi!SetSecurityInfo. Delay loading for advapi will cause infinite recursion.
|
||||||
// Note: the infinite recursion issue has been resolved int 5.43
|
// Note: the infinite recursion issue has been resolved int 5.43
|
||||||
if ((Dll_ImageType == DLL_IMAGE_GOOGLE_CHROME) || (Dll_ImageType == DLL_IMAGE_ACROBAT_READER)) {
|
if ((Dll_ImageType == DLL_IMAGE_GOOGLE_CHROME) || (Dll_ImageType == DLL_IMAGE_ACROBAT_READER) || Config_GetSettingsForImageName_bool(L"UseSbieDeskHack", FALSE)) {
|
||||||
SetSecurityInfo = __sys_SetSecurityInfo;
|
SetSecurityInfo = __sys_SetSecurityInfo;
|
||||||
GetSecurityInfo = __sys_GetSecurityInfo;
|
GetSecurityInfo = __sys_GetSecurityInfo;
|
||||||
SBIEDLL_HOOK(AdvApi_, SetSecurityInfo);
|
SBIEDLL_HOOK(AdvApi_, SetSecurityInfo);
|
||||||
|
@ -730,7 +730,7 @@ _FX BOOLEAN Ntmarta_Init(HMODULE module)
|
||||||
#define GETPROC2(x,s) __sys_Ntmarta_##x##s = (P_##x) Ldr_GetProcAddrNew(DllName_ntmarta, L#x L#s,#x #s);
|
#define GETPROC2(x,s) __sys_Ntmarta_##x##s = (P_##x) Ldr_GetProcAddrNew(DllName_ntmarta, L#x L#s,#x #s);
|
||||||
|
|
||||||
GETPROC2(GetSecurityInfo, );
|
GETPROC2(GetSecurityInfo, );
|
||||||
if ((Dll_ImageType == DLL_IMAGE_GOOGLE_CHROME) || (Dll_ImageType == DLL_IMAGE_ACROBAT_READER)) {
|
if ((Dll_ImageType == DLL_IMAGE_GOOGLE_CHROME) || (Dll_ImageType == DLL_IMAGE_ACROBAT_READER) || Config_GetSettingsForImageName_bool(L"UseSbieDeskHack", FALSE)) {
|
||||||
|
|
||||||
GetSecurityInfo = __sys_Ntmarta_GetSecurityInfo;
|
GetSecurityInfo = __sys_Ntmarta_GetSecurityInfo;
|
||||||
if (GetSecurityInfo)
|
if (GetSecurityInfo)
|
||||||
|
|
|
@ -578,18 +578,22 @@ _FX HDESK Gui_OpenDesktopA(
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
//Gui_CreateWindowStationW
|
//Gui_CreateWindowStationW
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
extern HANDLE Sandboxie_WinSta;
|
|
||||||
|
|
||||||
_FX HANDLE Gui_CreateWindowStationW (void *lpwinsta, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa) {
|
|
||||||
|
_FX HANDLE Gui_CreateWindowStationW (void *lpwinsta, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa)
|
||||||
|
{
|
||||||
HANDLE myHandle = 0;
|
HANDLE myHandle = 0;
|
||||||
|
|
||||||
myHandle = __sys_CreateWindowStationW(lpwinsta, dwFlags, dwDesiredAccess, lpsa);
|
myHandle = __sys_CreateWindowStationW(lpwinsta, dwFlags, dwDesiredAccess, lpsa);
|
||||||
if (!myHandle) {
|
if (myHandle)
|
||||||
if(Sandboxie_WinSta)
|
return myHandle;
|
||||||
return Sandboxie_WinSta;
|
|
||||||
SbieApi_Log(2205, L"CreateWindowStation");
|
extern HANDLE Sandboxie_WinSta;
|
||||||
}
|
if(Sandboxie_WinSta && ((Dll_ImageType == DLL_IMAGE_GOOGLE_CHROME) || (Dll_ImageType == DLL_IMAGE_MOZILLA_FIREFOX) || Config_GetSettingsForImageName_bool(L"UseSbieWndStation", TRUE)))
|
||||||
return myHandle;
|
return Sandboxie_WinSta;
|
||||||
|
|
||||||
|
SbieApi_Log(2205, L"CreateWindowStation");
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -598,22 +602,26 @@ _FX HANDLE Gui_CreateWindowStationW (void *lpwinsta, DWORD dwFlags, ACCESS_MASK
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
_FX HANDLE Gui_CreateWindowStationA (void *lpwinsta, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa) {
|
_FX HANDLE Gui_CreateWindowStationA (void *lpwinsta, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa)
|
||||||
|
{
|
||||||
HANDLE myHandle = 0;
|
HANDLE myHandle = 0;
|
||||||
|
|
||||||
myHandle = __sys_CreateWindowStationA(lpwinsta, dwFlags, dwDesiredAccess, lpsa);
|
myHandle = __sys_CreateWindowStationA(lpwinsta, dwFlags, dwDesiredAccess, lpsa);
|
||||||
if (!myHandle) {
|
if (myHandle)
|
||||||
if(Sandboxie_WinSta)
|
return myHandle;
|
||||||
return Sandboxie_WinSta;
|
|
||||||
SbieApi_Log(2205, L"CreateWindowStation");
|
extern HANDLE Sandboxie_WinSta;
|
||||||
}
|
if(Sandboxie_WinSta && ((Dll_ImageType == DLL_IMAGE_GOOGLE_CHROME) || (Dll_ImageType == DLL_IMAGE_MOZILLA_FIREFOX) || Config_GetSettingsForImageName_bool(L"UseSbieWndStation", TRUE)))
|
||||||
return myHandle;
|
return Sandboxie_WinSta;
|
||||||
|
|
||||||
|
SbieApi_Log(2205, L"CreateWindowStation");
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
// Gui_CreateDesktopW
|
// Gui_CreateDesktopW
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
extern HANDLE Sandboxie_Desktop;
|
|
||||||
|
|
||||||
_FX HDESK Gui_CreateDesktopW(
|
_FX HDESK Gui_CreateDesktopW(
|
||||||
void *lpszDesktop, void *lpszDevice, void *DevMode, ULONG dwFlags,
|
void *lpszDesktop, void *lpszDevice, void *DevMode, ULONG dwFlags,
|
||||||
|
@ -625,7 +633,7 @@ _FX HDESK Gui_CreateDesktopW(
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
if (!Config_GetSettingsForImageName_bool(L"UseSbieWndStation", TRUE) && (Dll_ImageType != DLL_IMAGE_GOOGLE_CHROME) && (Dll_ImageType != DLL_IMAGE_MOZILLA_FIREFOX))
|
if ((Dll_ImageType == DLL_IMAGE_GOOGLE_CHROME) || (Dll_ImageType == DLL_IMAGE_ACROBAT_READER) || Config_GetSettingsForImageName_bool(L"UseSbieDeskHack", FALSE))
|
||||||
{
|
{
|
||||||
//Call the system CreateDesktopW without a security context.
|
//Call the system CreateDesktopW without a security context.
|
||||||
//This works in tandem with the Ntmarta_GetSecurityInfo hook (see in advapi.c).
|
//This works in tandem with the Ntmarta_GetSecurityInfo hook (see in advapi.c).
|
||||||
|
@ -639,8 +647,6 @@ _FX HDESK Gui_CreateDesktopW(
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Sandboxie_Desktop)
|
|
||||||
return Sandboxie_Desktop;
|
|
||||||
SbieApi_Log(2205, L"CreateDesktop");
|
SbieApi_Log(2205, L"CreateDesktop");
|
||||||
return CreateEvent(NULL, FALSE, FALSE, NULL);
|
return CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||||
}
|
}
|
||||||
|
@ -661,15 +667,13 @@ _FX HDESK Gui_CreateDesktopA(
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
if (!Config_GetSettingsForImageName_bool(L"UseSbieWndStation", TRUE) && (Dll_ImageType != DLL_IMAGE_GOOGLE_CHROME) && (Dll_ImageType != DLL_IMAGE_MOZILLA_FIREFOX))
|
if ((Dll_ImageType == DLL_IMAGE_GOOGLE_CHROME) || (Dll_ImageType == DLL_IMAGE_ACROBAT_READER) || Config_GetSettingsForImageName_bool(L"UseSbieDeskHack", FALSE))
|
||||||
{
|
{
|
||||||
rc = __sys_CreateDesktopA(lpszDesktop, NULL, NULL, dwFlags, dwDesiredAccess, NULL);
|
rc = __sys_CreateDesktopA(lpszDesktop, NULL, NULL, dwFlags, dwDesiredAccess, NULL);
|
||||||
if (rc)
|
if (rc)
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Sandboxie_Desktop)
|
|
||||||
return Sandboxie_Desktop;
|
|
||||||
SbieApi_Log(2205, L"CreateDesktop");
|
SbieApi_Log(2205, L"CreateDesktop");
|
||||||
return CreateEvent(NULL, FALSE, FALSE, NULL);
|
return CreateEvent(NULL, FALSE, FALSE, NULL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue