This commit is contained in:
DavidXanatos 2024-07-21 10:13:32 +02:00
parent 692eabd3db
commit 0aeb9fc99a
8 changed files with 56 additions and 33 deletions

View File

@ -10,6 +10,18 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- You can also use "Sandman.exe /add_force program_path" to do it
## [1.14.5 / 5.69.5] - 2024-07-?
### Added
### Fixed
- fixed Getting two advanced supporter certificate popups everytime I open Sandbox Settings on any sandbox [#4074](https://github.com/sandboxie-plus/Sandboxie/issues/4074)
- fixed issue with HwID bound serial keys failing when no HwID could be obtained
### Changed
- the certificate format can now take an explicit validity days specification, needed for gapless certificat renewal.
## [1.14.4 / 5.69.4] - 2024-07-13
@ -24,6 +36,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- added hwid display
## [1.14.3 / 5.69.3] - 2024-07-01
### Changed

View File

@ -1,7 +1,4 @@
# Sandboxie Plus / Classic
---
### Note: This is a community fork that took place after the release of the Sandboxie source code and not the official continuation of the previous development (see the [project history](./README.md#-project-history) and [#2926](https://github.com/sandboxie-plus/Sandboxie/issues/2926)).
---
[![Plus license](https://img.shields.io/badge/Plus%20license-Custom%20-blue.svg)](./LICENSE.Plus) [![Classic license](https://img.shields.io/github/license/Sandboxie-Plus/Sandboxie?label=Classic%20license&color=blue)](./LICENSE.Classic) [![GitHub Release](https://img.shields.io/github/release/sandboxie-plus/Sandboxie.svg)](https://github.com/sandboxie-plus/Sandboxie/releases/latest) [![GitHub Pre-Release](https://img.shields.io/github/release/sandboxie-plus/Sandboxie/all.svg?label=pre-release)](https://github.com/sandboxie-plus/Sandboxie/releases) [![GitHub Build Status](https://github.com/sandboxie-plus/Sandboxie/actions/workflows/main.yml/badge.svg)](https://github.com/sandboxie-plus/Sandboxie/actions) [![GitHub Codespell Status](https://github.com/sandboxie-plus/Sandboxie/actions/workflows/codespell.yml/badge.svg)](https://github.com/sandboxie-plus/Sandboxie/actions/workflows/codespell.yml)
@ -15,6 +12,8 @@ Sandboxie is a sandbox-based isolation software for 32-bit and 64-bit Windows NT
Sandboxie allows you to create virtually unlimited sandboxes and run them alone or simultaneously to isolate programs from the host and each other, while also allowing you to run as many programs simultaneously in a single box as you wish.
**Note: This is a community fork that took place after the release of the Sandboxie source code and not the official continuation of the previous development (see the [project history](./README.md#-project-history)).**
## ⏬ Download
[Latest Release](https://github.com/sandboxie-plus/Sandboxie/releases/latest)

View File

@ -26,7 +26,7 @@
#define VERSION_MJR 5
#define VERSION_MIN 69
#define VERSION_REV 4
#define VERSION_REV 5
#define VERSION_UPD 0
#if VERSION_UPD > 0

View File

@ -443,7 +443,7 @@ extern POOL *Driver_Pool;
NTSTATUS Conf_Read_Line(STREAM *stream, WCHAR *line, int *linenum);
_FX VOID KphParseDate(const WCHAR* date_str, LARGE_INTEGER* date)
_FX BOOLEAN KphParseDate(const WCHAR* date_str, LARGE_INTEGER* date)
{
TIME_FIELDS timeFiled = { 0 };
const WCHAR* ptr = date_str;
@ -464,8 +464,11 @@ _FX VOID KphParseDate(const WCHAR* date_str, LARGE_INTEGER* date)
timeFiled.Year = (CSHORT)_wtoi(ptr);
RtlTimeFieldsToTime(&timeFiled, date);
return TRUE;
}
}
return FALSE;
}
// Example of __DATE__ string: "Jul 27 2012"
@ -553,6 +556,7 @@ _FX NTSTATUS KphValidateCertificate()
LONG amount = 1;
WCHAR* key = NULL;
LARGE_INTEGER cert_date = { 0 };
LONG days = 0;
Verify_CertInfo.State = 0; // clear
@ -673,7 +677,15 @@ _FX NTSTATUS KphValidateCertificate()
if (_wcsicmp(L"DATE", name) == 0 && cert_date.QuadPart == 0) {
// DD.MM.YYYY
KphParseDate(value, &cert_date);
if (KphParseDate(value, &cert_date)) {
// DD.MM.YYYY +Days
WCHAR ptr = wcschr(value, L'+');
if (ptr)
days = _wtol(ptr);
}
}
else if (_wcsicmp(L"DAYS", name) == 0) {
days = _wtol(value);
}
else if (_wcsicmp(L"TYPE", name) == 0 && type == NULL) {
// TYPE-LEVEL
@ -840,7 +852,8 @@ _FX NTSTATUS KphValidateCertificate()
Verify_CertInfo.level = eCertMaxLevel;
else if (CERT_IS_TYPE(Verify_CertInfo, eCertEvaluation)) // in evaluation the level field holds the amount of days to allow evaluation for
{
expiration_date.QuadPart = cert_date.QuadPart + KphGetDateInterval((CSHORT)(level ? _wtoi(level) : 7), 0, 0); // x days, default 7
if(days) expiration_date.QuadPart = cert_date.QuadPart + KphGetDateInterval((CSHORT)(days), 0, 0);
else expiration_date.QuadPart = cert_date.QuadPart + KphGetDateInterval((CSHORT)(level ? _wtoi(level) : 7), 0, 0); // x days, default 7
Verify_CertInfo.level = eCertAdvanced;
}
else if (!level || _wcsicmp(level, L"STANDARD") == 0) // not used, default does not have explicit level
@ -859,7 +872,7 @@ _FX NTSTATUS KphValidateCertificate()
Verify_CertInfo.type = eCertEternal;
Verify_CertInfo.level = eCertMaxLevel;
}
else if (_wcsicmp(level, L"LARGE") == 0 && cert_date.QuadPart < KphGetDate(1, 04, 2022)) {
else if (_wcsicmp(level, L"LARGE") == 0 && cert_date.QuadPart < KphGetDate(1, 04, 2022)) { // initial batch of semi perpetual large certs
Verify_CertInfo.level = eCertAdvanced1;
expiration_date.QuadPart = -2;
}
@ -889,8 +902,10 @@ _FX NTSTATUS KphValidateCertificate()
if (CERT_IS_TYPE(Verify_CertInfo, eCertEternal))
expiration_date.QuadPart = -1; // at the end of time (never)
else if(!expiration_date.QuadPart)
expiration_date.QuadPart = cert_date.QuadPart + KphGetDateInterval(0, 0, 1); // default 1 year, unless set differently already
else if (!expiration_date.QuadPart) {
if (days) expiration_date.QuadPart = cert_date.QuadPart + KphGetDateInterval((CSHORT)(days), 0, 0);
else expiration_date.QuadPart = cert_date.QuadPart + KphGetDateInterval(0, 0, 1); // default 1 year, unless set differently already
}
// check if this is a subscription type certificate
BOOLEAN isSubscription = CERT_IS_SUBSCRIPTION(Verify_CertInfo);
@ -1091,7 +1106,9 @@ void InitFwUuid()
for (; i < 16; i++)
ptr = hexbyte(uuid[i], ptr);
*ptr++ = 0;
//DbgPrint("sbie FW-UUID: %S\n", g_uuid_str);
}
else // fallback to null guid on error
wcscpy(g_uuid_str, L"00000000-0000-0000-0000-000000000000");
DbgPrint("sbie FW-UUID: %S\n", g_uuid_str);
}

View File

@ -558,20 +558,6 @@
</property>
</widget>
</item>
<item row="7" column="1" colspan="3">
<widget class="QCheckBox" name="chkShellMenu3">
<property name="text">
<string>Add Make Folder/File Forced' to the context menu</string>
</property>
</widget>
</item>
<item row="8" column="1" colspan="3">
<widget class="QCheckBox" name="chkShellMenu4">
<property name="text">
<string>Add 'Open Path to Certain Sandbox' to context menu</string>
</property>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="lblStartMenu">
<property name="font">
@ -651,6 +637,20 @@
</property>
</spacer>
</item>
<item row="7" column="2" colspan="2">
<widget class="QCheckBox" name="chkShellMenu3">
<property name="text">
<string>Add Set Force in Sandbox' to the context menu</string>
</property>
</widget>
</item>
<item row="8" column="2" colspan="2">
<widget class="QCheckBox" name="chkShellMenu4">
<property name="text">
<string>Add 'Set Open Path in Sandbox' to context menu</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabTray">

View File

@ -1638,8 +1638,6 @@ void CSandMan::OnMessage(const QString& MsgData)
}
else if (Message.left(9) == "AddForce:")
{
QString response = QInputDialog::getText(g_GUIParent, tr("Which box you want to add in?"), tr("Type the box name which you are going to set:"));
if(!response.isEmpty())
{
@ -1662,8 +1660,6 @@ void CSandMan::OnMessage(const QString& MsgData)
}
else if (Message.left(8) == "AddOpen:")
{
QString response = QInputDialog::getText(g_GUIParent, tr("Which box you want to add in?"), tr("Type the box name which you are going to set:"));
if (!response.isEmpty())
{

View File

@ -176,9 +176,7 @@ int main(int argc, char *argv[])
if (!cmdLine0) return -1;
LPWSTR cmdLine = cmdLine0 + 10;
g_PendingMessage = "AddForce:" + QString::fromWCharArray(cmdLine + 1);
}
if (AOPos != -1) {
LPWSTR cmdLine0 = wcsstr(GetCommandLineW(), L"/add_open");
if (!cmdLine0) return -1;

View File

@ -2,7 +2,7 @@
#define VERSION_MJR 1
#define VERSION_MIN 14
#define VERSION_REV 4
#define VERSION_REV 5
#define VERSION_UPD 0
#ifndef STR