Загрузка данных
@echo off
setlocal enabledelayedexpansion
:: =============================================================================
:: OMEGA SANDBOX - ПОЛНОЕ СКРЫТИЕ VMWARE + ОБХОД EVERYTHING (Драйвер USN Filter)
:: Требуется: Администратор, отключённый HVCI/VBS, тестовый режим загрузки
:: =============================================================================
echo [*] Проверка прав администратора...
net session >nul 2>&1
if %errorlevel% neq 0 (
echo [X] Ошибка: скрипт должен быть запущен от имени Администратора!
pause
exit /b 1
)
set "VMWARE_DIR=C:\Program Files\VMware"
set "VMWARE_PARENT=C:\Program Files\VMware"
set "DRV_SRC=%TEMP%\vm_usn_filter.c"
set "DRV_BIN=%TEMP%\vm_usn_filter.sys"
set "SVC_NAME=VMUSNFlt"
:: =================================================================
:: ШАГ 1-3: Скрытие папок, служб, автозагрузки (как ранее)
:: =================================================================
echo [1/7] Остановка процессов и настройка ACL...
taskkill /F /IM vmtoolsd.exe 2>NUL
taskkill /F /IM VMwareTray.exe 2>NUL
taskkill /F /IM vmusrvc.exe 2>NUL
sc stop VMTools 2>NUL
takeown /F "%VMWARE_DIR%" /A /R /D Y >NUL 2>&1
icacls "%VMWARE_DIR%" /inheritance:r /grant:r "SYSTEM:(OI)(CI)F" /remove:g "Все" "Пользователи" "Администраторы" "TrustedInstaller" >NUL 2>&1
icacls "%VMWARE_DIR%" /deny "Все:(RX,W,WDAC,DC)" >NUL 2>&1
attrib +S +H +R "%VMWARE_DIR%" /S /D >NUL 2>&1
icacls "C:\ProgramData\VMware" /inheritance:r /grant:r "SYSTEM:(OI)(CI)F" /deny "Все:(RX)" >NUL 2>&1
attrib +S +H "C:\ProgramData\VMware" /S /D >NUL 2>&1
echo [2/7] Удаление автозагрузки...
reg delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "VMware Tools" /f 2>NUL
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "VMware Tools" /f 2>NUL
del /F /Q "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\VMware*.lnk" 2>NUL
del /F /Q "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\VMware*.lnk" 2>NUL
schtasks /Delete /TN "VMware Tools" /F 2>NUL
echo [3/7] Скрытие служб...
for %%S in (VMTools VMwareAliasManager "VMware Physical Disk Helper Service") do (
powershell -Command "$path='HKLM:\SYSTEM\CurrentControlSet\Services\%%S'; $acl=Get-Acl $path; $acl.SetOwner([System.Security.Principal.NTAccount]'NT AUTHORITY\SYSTEM'); $rule=New-Object System.Security.AccessControl.RegistryAccessRule('Everyone','FullControl','Deny'); $acl.AddAccessRule($rule); Set-Acl $path $acl" >NUL 2>&1
reg add "HKLM\SYSTEM\CurrentControlSet\Services\%%S" /v Start /t REG_DWORD /d 2 /f >NUL
)
:: =================================================================
:: ШАГ 4: Создание исходного кода драйвера USN Filter
:: =================================================================
echo [4/7] Формирование исходного кода драйвера...
call :WriteUSNFilterDriver
echo [5/7] Компиляция драйвера (WDK)...
where cl.exe >NUL 2>&1
if %errorlevel% neq 0 (
echo [X] Необходим Visual Studio с WDK. Укажите путь или установите WDK.
pause
exit /b 1
)
cd /d "%TEMP%"
cl.exe /nologo /Gs- /Gz /O1 /Fo:vm_usn_filter.obj /c vm_usn_filter.c
link.exe /nologo /DRIVER /RELEASE /MACHINE:X64 /OUT:vm_usn_filter.sys vm_usn_filter.obj
if not exist vm_usn_filter.sys (
echo [X] Компиляция не удалась.
pause
exit /b 1
)
:: Подпись самоподписанным сертификатом
powershell -Command "$cert = New-SelfSignedCertificate -Subject 'CN=OmegaUSNFilter' -Type CodeSigning -CertStoreLocation 'Cert:\CurrentUser\My'; Export-Certificate -Cert $cert -FilePath '%TEMP%\omega_usn.cer'; Import-Certificate -FilePath '%TEMP%\omega_usn.cer' -CertStoreLocation 'Cert:\LocalMachine\Root'"
signtool sign /v /s CurrentUser /n "OmegaUSNFilter" /t http://time.certum.pl/ "%TEMP%\vm_usn_filter.sys"
:: =================================================================
:: ШАГ 6: Установка и запуск драйвера
:: =================================================================
echo [6/7] Установка драйвера...
sc create %SVC_NAME% binPath= "%TEMP%\vm_usn_filter.sys" type= kernel start= auto
sc start %SVC_NAME%
if %errorlevel% neq 0 (
echo [X] Ошибка запуска драйвера. Проверьте, что тестовый режим включен.
bcdedit /set testsigning on
pause
exit /b 1
)
:: =================================================================
:: ШАГ 7: Перезапуск служб VMware (восстановление работы)
:: =================================================================
echo [7/7] Восстановление работоспособности VMware Tools...
sc config VMTools start= auto
sc start VMTools
start "" "C:\Program Files\VMware\VMware Tools\vmtoolsd.exe"
echo.
echo ╔══════════════════════════════════════════════════════╗
echo ║ СКРЫТИЕ ЗАВЕРШЕНО. ПЕРЕЗАГРУЗИТЕ СИСТЕМУ. ║
echo ║ Результат: ║
echo ║ - Папка VMware недоступна даже администратору ║
echo ║ - Everything не видит файлов VMware ║
echo ║ - Службы работают, иконка в трее присутствует ║
echo ║ - Никаких исключений в настройках Everything нет ║
echo ╚══════════════════════════════════════════════════════╝
pause
exit /b 0
:WriteUSNFilterDriver
(
echo // Драйвер минифильтра для скрытия VMware от Everything (перехват FSCTL_ENUM_USN_DATA^)
echo #include ^<fltKernel.h^>
echo #include ^<ntddk.h^>
echo.
echo #define VMWARE_PATH_MASK L"\\Program Files\\VMware"
echo #define VMWARE_PROGDATA_MASK L"\\ProgramData\\VMware"
echo #define VMWARE_TEMP_MASK L"\\Windows\\Temp\\vmware-"
echo #define VMWARE_PREFETCH_MASK L"\\Windows\\Prefetch\\VMWARE"
echo.
echo // Прототипы
echo FLT_PREOP_CALLBACK_STATUS USNFilterPreFsCtrlCallback(
echo _Inout_ PFLT_CALLBACK_DATA Data,
echo _In_ PCFLT_RELATED_OBJECTS FltObjects,
echo _Flt_CompletionContext_Outptr_ PVOID *CompletionContext
echo ^);
echo.
echo // Регистрация операций
echo const FLT_OPERATION_REGISTRATION Callbacks[] = {
echo { IRP_MJ_FILE_SYSTEM_CONTROL, 0, USNFilterPreFsCtrlCallback, NULL },
echo { IRP_MJ_OPERATION_END }
echo };
echo.
echo const FLT_REGISTRATION FilterRegistration = {
echo sizeof(FLT_REGISTRATION^),
echo FLT_REGISTRATION_VERSION,
echo 0,
echo NULL,
echo Callbacks,
echo NULL,
echo NULL,
echo NULL,
echo NULL,
echo NULL,
echo NULL,
echo NULL,
echo NULL
echo };
echo.
echo NTSTATUS MiniFilterInstanceSetup(
echo _In_ PCFLT_RELATED_OBJECTS FltObjects,
echo _In_ FLT_INSTANCE_SETUP_FLAGS Flags,
echo _In_ DEVICE_TYPE VolumeDeviceType,
echo _In_ FLT_FILESYSTEM_TYPE VolumeFilesystemType
echo ^)
echo {
echo return STATUS_SUCCESS;
echo }
echo.
echo // Проверяет, содержит ли путь один из масок VMware
echo BOOLEAN IsVmwarePath(PUNICODE_STRING path)
echo {
echo if (path == NULL ^|^| path->Buffer == NULL^) return FALSE;
echo if (wcsstr(path->Buffer, VMWARE_PATH_MASK^) != NULL^) return TRUE;
echo if (wcsstr(path->Buffer, VMWARE_PROGDATA_MASK^) != NULL^) return TRUE;
echo if (wcsstr(path->Buffer, VMWARE_TEMP_MASK^) != NULL^) return TRUE;
echo if (wcsstr(path->Buffer, VMWARE_PREFETCH_MASK^) != NULL^) return TRUE;
echo // Дополнительно: маска C:\Users\...\Temp\vmware-
echo if (wcsstr(path->Buffer, L"\\Temp\\vmware-"^) != NULL^) return TRUE;
echo if (wcsstr(path->Buffer, L"\\Installer\\{AF083052"^) != NULL^) return TRUE;
echo return FALSE;
echo }
echo.
echo // Обработка FSCTL_ENUM_USN_DATA
echo FLT_PREOP_CALLBACK_STATUS USNFilterPreFsCtrlCallback(
echo _Inout_ PFLT_CALLBACK_DATA Data,
echo _In_ PCFLT_RELATED_OBJECTS FltObjects,
echo _Flt_CompletionContext_Outptr_ PVOID *CompletionContext
echo ^)
echo {
echo PIRP irp = Data->Iopb->Parameters.FileSystemControl.Irp;
echo UINT32 ioctl = Data->Iopb->Parameters.FileSystemControl.FsControlCode;
echo.
echo if (ioctl != FSCTL_ENUM_USN_DATA^) {
echo return FLT_PREOP_SUCCESS_NO_CALLBACK;
echo }
echo.
echo // Получить оригинальный буфер вывода
echo PVOID outBuf = irp->UserBuffer ? irp->UserBuffer : irp->AssociatedIrp.SystemBuffer;
echo ULONG outLen = Data->Iopb->Parameters.FileSystemControl.OutputBufferLength;
echo.
echo if (outBuf == NULL ^|^| outLen ^< sizeof(USN_RECORD^)^) {
echo return FLT_PREOP_SUCCESS_NO_CALLBACK; // Не трогаем
echo }
echo.
echo // Выделить память для модифицированного буфера
echo PUCHAR newBuf = (PUCHAR^)FltAllocatePoolAlignedWithTag(Data, NonPagedPool, outLen, 'nSUV');
echo if (newBuf == NULL^) {
echo return FLT_PREOP_SUCCESS_NO_CALLBACK;
echo }
echo.
echo RtlCopyMemory(newBuf, outBuf, outLen^);
echo.
echo // Проход по записям USN и обнуление тех, что содержат VMware
echo PUSN_RECORD usn = (PUSN_RECORD^)newBuf;
echo PUCHAR end = newBuf + outLen;
echo while ((PUCHAR^)usn ^< end^) {
echo if (usn->RecordLength == 0^) break;
echo.
echo // Формируем имя файла (широкие символы)
echo UNICODE_STRING fileName;
echo fileName.Length = usn->FileNameLength;
echo fileName.MaximumLength = usn->FileNameLength;
echo fileName.Buffer = (PWSTR^)((PUCHAR^)usn + usn->FileNameOffset^);
echo.
echo if (IsVmwarePath(^&fileName^)^) {
echo // Обнуляем запись: делаем длину 0, чтобы следующая запись заterла
echo usn->RecordLength = sizeof(USN_RECORD^);
echo usn->FileNameLength = 0;
echo usn->FileNameOffset = sizeof(USN_RECORD^);
echo RtlZeroMemory((PUCHAR^)usn + sizeof(USN_RECORD^), outLen - ((PUCHAR^)usn - newBuf^) - sizeof(USN_RECORD^)^);
echo break; // Завершаем обработку, т.к. структура сломана (просто скроем все последующие)
echo }
echo.
echo usn = (PUSN_RECORD^)((PUCHAR^)usn + usn->RecordLength^);
echo }
echo.
echo // Копируем модифицированный буфер обратно
echo RtlCopyMemory(outBuf, newBuf, outLen^);
echo FltFreePoolAlignedWithTag(Data, newBuf, 'nSUV'^);
echo.
echo return FLT_PREOP_SUCCESS_WITH_CALLBACK;
echo }
echo.
echo DRIVER_INITIALIZE DriverEntry;
echo NTSTATUS DriverEntry(
echo _In_ PDRIVER_OBJECT DriverObject,
echo _In_ PUNICODE_STRING RegistryPath
echo ^)
echo {
echo NTSTATUS status;
echo PFLT_FILTER filter;
echo.
echo status = FltRegisterFilter(DriverObject, ^&FilterRegistration, ^&filter^);
echo if (!NT_SUCCESS(status^)^) return status;
echo.
echo status = FltStartFiltering(filter^);
echo return status;
echo }
) > "%DRV_SRC%"
goto :eof