1
mirror of https://github.com/rapid7/metasploit-payloads synced 2025-03-24 18:16:24 +01:00

Stacks of work getting modules wired up

This commit is contained in:
OJ 2015-10-02 20:23:59 +10:00 committed by Brent Cook
parent 126c3b8e07
commit 007afeae2a
12 changed files with 500 additions and 32 deletions

@ -32,6 +32,7 @@ Release
# VS local dbs
*.sdf
*.opensdf
*.aps
# VS ipch
workspace/ipch/*

@ -646,7 +646,7 @@ STDAPI DllCanUnloadNow(void)
}
#ifndef Py_NO_ENABLE_SHARED
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvRes)
BOOL WINAPI CtypesDllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvRes)
{
switch(fdwReason) {
case DLL_PROCESS_ATTACH:

@ -0,0 +1,50 @@
import sys, imp, marshal
class MetLoader:
def __init__(self, libs):
self.libs = libs
#print libs.keys()
def load_module(self, name):
print 'Searching for: {0}'.format(name)
if name in sys.modules:
return sys.modules[name]
if not name in self.libs:
print 'No lib: {0}'.format(name)
return None
filename, package, code = self.libs[name]
imp.acquire_lock()
mod = None
try:
mod = imp.new_module(name)
sys.modules[name] = mod
try:
mod.__file__ = filename
if package:
mod.__path__ = [name.replace('.', '\\')]
exec code in mod.__dict__
mod.__loader__ = self
print 'Executed code for: {0}'.format(name)
except e:
del sys.modules[name]
mod = None
except:
mod = None
finally:
imp.release_lock()
print 'Result for {0}: {1}'.format(name, mod != None)
return mod
class MetFinder:
def __init__(self, libs):
self.loader = MetLoader(libs)
def find_module(self, name, path = None):
return self.loader

@ -0,0 +1,40 @@
#!/usr/bin/env python
import os,struct,py_compile,zlib,marshal
def w(f,c):
with open(f,'wb') as f:
f.write(c)
def r(f):
with open(f,'rb') as f:
return f.read()
def p(d):
return struct.pack('<L', d)
modules = {}
here = os.getcwd()
folder = '..\\Lib'
os.chdir(folder)
for entry in os.listdir('.'):
if os.path.isfile(entry):
if entry.endswith('.py'):
path = entry.split('.')[0]
modules[path] = (entry, False, compile(r(entry), entry, 'exec'))
else:
for root, _, files in os.walk(entry):
for f in [x for x in files if x.endswith('.py')]:
path = os.path.join(root, f)
modname = path.split('.')[0].replace('\\', '.').replace('.__init__', '')
modules[modname] = (path, True, compile(r(path), path, 'exec'))
os.chdir(here)
importer = compile(r('met_importer.py'), 'met_importer.py', 'exec')
content = zlib.compress(marshal.dumps([importer, modules]), 9)
w('python_core.cz', p(len(content)) + content)

@ -0,0 +1,3 @@
#include "python_core.rh"
IDR_PYTHON_CORE BINARY MOVEABLE PURE "python_core.cz"

@ -0,0 +1 @@
#define IDR_PYTHON_CORE 1337

@ -3,19 +3,151 @@
* @brief Definitions for the python command bindings.
*/
#include "Python.h"
#include "marshal.h"
#include "python_main.h"
#include "python_commands.h"
#include "Resource Files/python_core.rh"
typedef struct _InitFunc
{
#ifdef DEBUGTRACE
PCHAR name;
#endif
PyMODINIT_FUNC(*func)(void);
} InitFunc;
#ifdef DEBUGTRACE
#define DEC_INIT_FUNC(x) { #x, x }
#else
#define DEC_INIT_FUNC(x) { x }
#endif
extern PyMODINIT_FUNC initerrno(void);
extern PyMODINIT_FUNC init_functools(void);
extern PyMODINIT_FUNC init_socket(void);
extern PyMODINIT_FUNC init_weakref(void);
extern PyMODINIT_FUNC initarray(void);
extern PyMODINIT_FUNC initaudioop(void);
extern PyMODINIT_FUNC init_csv(void);
extern PyMODINIT_FUNC init_io(void);
extern PyMODINIT_FUNC init_multibytecodec(void);
extern PyMODINIT_FUNC init_bisect(void);
extern PyMODINIT_FUNC init_codecs(void);
extern PyMODINIT_FUNC init_collections(void);
extern PyMODINIT_FUNC init_heapq(void);
extern PyMODINIT_FUNC init_locale(void);
extern PyMODINIT_FUNC init_lsprof(void);
extern PyMODINIT_FUNC init_random(void);
extern PyMODINIT_FUNC init_sre(void);
extern PyMODINIT_FUNC init_struct(void);
extern PyMODINIT_FUNC init_weakref(void);
extern PyMODINIT_FUNC initaudioop(void);
extern PyMODINIT_FUNC initbinascii(void);
extern PyMODINIT_FUNC initcmath(void);
extern PyMODINIT_FUNC initcPickle(void);
extern PyMODINIT_FUNC initcStringIO(void);
extern PyMODINIT_FUNC initdatetime(void);
extern PyMODINIT_FUNC initfuture_builtins(void);
extern PyMODINIT_FUNC initgc(void);
extern PyMODINIT_FUNC initimageop(void);
extern PyMODINIT_FUNC inititertools(void);
extern PyMODINIT_FUNC initmath(void);
extern PyMODINIT_FUNC init_md5(void);
extern PyMODINIT_FUNC initmmap(void);
extern PyMODINIT_FUNC initoperator(void);
extern PyMODINIT_FUNC initparser(void);
extern PyMODINIT_FUNC initnt(void);
extern PyMODINIT_FUNC init_sha256(void);
extern PyMODINIT_FUNC init_sha512(void);
extern PyMODINIT_FUNC init_sha(void);
extern PyMODINIT_FUNC initsignal(void);
extern PyMODINIT_FUNC initstrop(void);
extern PyMODINIT_FUNC init_symtable(void);
extern PyMODINIT_FUNC initthread(void);
extern PyMODINIT_FUNC inittime(void);
extern PyMODINIT_FUNC initxxsubtype(void);
extern PyMODINIT_FUNC initzipimport(void);
extern PyMODINIT_FUNC init_subprocess(void);
extern PyMODINIT_FUNC init_winreg(void);
extern PyMODINIT_FUNC initselect(void);
extern PyMODINIT_FUNC initunicodedata(void);
extern PyMODINIT_FUNC init_ctypes(void);
// order of these is actually important
static InitFunc init_funcs[] =
{
// the functions below that are commented out are invoked prior
// to the python modules being included.
//DEC_INIT_FUNC(initerrno),
//DEC_INIT_FUNC(initnt),
//DEC_INIT_FUNC(init_socket),
//DEC_INIT_FUNC(init_functools),
DEC_INIT_FUNC(initselect),
DEC_INIT_FUNC(initselect),
DEC_INIT_FUNC(init_weakref),
DEC_INIT_FUNC(initarray),
DEC_INIT_FUNC(initaudioop),
DEC_INIT_FUNC(init_csv),
DEC_INIT_FUNC(init_io),
DEC_INIT_FUNC(init_multibytecodec),
DEC_INIT_FUNC(init_bisect),
DEC_INIT_FUNC(init_codecs),
DEC_INIT_FUNC(init_collections),
DEC_INIT_FUNC(init_heapq),
DEC_INIT_FUNC(init_locale),
DEC_INIT_FUNC(init_lsprof),
DEC_INIT_FUNC(init_random),
DEC_INIT_FUNC(init_sre),
DEC_INIT_FUNC(init_struct),
DEC_INIT_FUNC(init_weakref),
DEC_INIT_FUNC(initaudioop),
DEC_INIT_FUNC(initbinascii),
DEC_INIT_FUNC(initcmath),
DEC_INIT_FUNC(initcStringIO),
DEC_INIT_FUNC(initcPickle),
DEC_INIT_FUNC(inittime),
DEC_INIT_FUNC(initdatetime),
DEC_INIT_FUNC(initgc),
DEC_INIT_FUNC(initimageop),
DEC_INIT_FUNC(inititertools),
DEC_INIT_FUNC(initfuture_builtins),
DEC_INIT_FUNC(initmath),
DEC_INIT_FUNC(init_md5),
DEC_INIT_FUNC(initmmap),
DEC_INIT_FUNC(initoperator),
DEC_INIT_FUNC(initparser),
DEC_INIT_FUNC(init_sha256),
DEC_INIT_FUNC(init_sha512),
DEC_INIT_FUNC(init_sha),
DEC_INIT_FUNC(initsignal),
DEC_INIT_FUNC(initstrop),
DEC_INIT_FUNC(init_symtable),
DEC_INIT_FUNC(initunicodedata),
DEC_INIT_FUNC(initthread),
DEC_INIT_FUNC(initxxsubtype),
DEC_INIT_FUNC(initzipimport),
DEC_INIT_FUNC(init_subprocess),
DEC_INIT_FUNC(init_winreg),
DEC_INIT_FUNC(init_ctypes),
DEC_INIT_FUNC(NULL)
};
static LIST* stderrBuffer = NULL;
static LIST* stdoutBuffer = NULL;
static LPBYTE coreLibPointer = NULL;
static DWORD coreLibSize = 0;
static PyObject* handle_write(LIST* target, PyObject* self, PyObject* args)
{
const char* written = NULL;
if (PyArg_ParseTuple(args, "s", &written))
{
dprintf("[PYTHON] something written to %p: %s", target, written);
list_add(target, strdup(written));
dprintf("[PYTHON] something written to %p: %s", target, written);
if (target != NULL)
{
list_add(target, strdup(written));
}
}
else
{
@ -61,12 +193,22 @@ static VOID dump_to_packet_and_destroy(LIST* source, Packet* packet, UINT tlvTyp
lock_release(source->lock);
list_destroy(source);
}
VOID python_destroy_session()
{
Py_Finalize();
}
/*!
* @brief Hook into key bits of python (such as stdout/stderr)
* @brief Prepare the session for use, including all the resources that are embedded.
*/
VOID initialize_hooks()
{
VOID python_prepare_session()
{
Py_IgnoreEnvironmentFlag = 1;
Py_NoSiteFlag = 1;
Py_Initialize();
PyEval_InitThreads();
PyObject* stdoutModule = Py_InitModule("meterpreter_stdout", meterpreter_stdout_hooks);
if (stdoutModule != NULL && PySys_SetObject("stdout", stdoutModule) == 0)
@ -87,6 +229,162 @@ VOID initialize_hooks()
{
dprintf("[PYTHON] Failed to set the stderr hook");
}
// with the output handlers sorted, we load the stuff from the compressed resource
// which should give us all the stuff we need to be useful.
initerrno();
initnt();
init_socket();
init_functools();
// have we loaded the core pointer already?
if (coreLibPointer == NULL)
{
MEMORY_BASIC_INFORMATION mbi;
if (!VirtualQuery((LPVOID)python_prepare_session, &mbi, sizeof(mbi)))
{
dprintf("[PYTHON] VirtualQuery failed: %d", GetLastError());
return;
}
HMODULE mod = (HMODULE)mbi.AllocationBase;
dprintf("[PYTHON] Module handle: %p", (LPVOID)mod);
HRSRC res = FindResource(mod, MAKEINTRESOURCEA(IDR_PYTHON_CORE), "BINARY");
if (res == NULL)
{
dprintf("[PYTHON] Unable to find resource: %d", GetLastError());
return;
}
HGLOBAL file = LoadResource(mod, res);
if (file == NULL)
{
dprintf("[PYTHON] Unable to load core library resource: %d", GetLastError());
return;
}
coreLibPointer = (LPBYTE)LockResource(file);
coreLibSize = *(LPDWORD)coreLibPointer;
coreLibPointer += sizeof(DWORD);
}
dprintf("[PYTHON] coreLibPointer: %p, coreLibSize: %d", coreLibPointer, coreLibSize);
if (coreLibPointer != NULL)
{
// Create a byte array with everything in it
PyObject* libString = PyString_FromStringAndSize(coreLibPointer, coreLibSize);
dprintf("[PYTHON] libString is %p", libString);
// import zlib
PyObject* zlibModStr = PyString_FromString("zlib");
dprintf("[PYTHON] zlibModStr: %p", zlibModStr);
PyObject* zlibMod = PyImport_Import(zlibModStr);
dprintf("[PYTHON] zlibMod: %p", zlibMod);
// get a reference to the decompress function
PyObject* zlibDecompress = PyObject_GetAttrString(zlibMod, "decompress");
dprintf("[PYTHON] zlibDecompress: %p", zlibDecompress);
// prepare arguments for invocation
PyObject* zlibDecompressArgs = PyTuple_Pack(1, libString);
dprintf("[PYTHON] zlibDecompressArgs: %p", zlibDecompressArgs);
// call zlib.decompress(libString)
PyObject* zlibDecompressResult = PyObject_CallObject(zlibDecompress, zlibDecompressArgs);
dprintf("[PYTHON] zlibDecompressResult: %p", zlibDecompressResult);
//dprintf("[PYTHON] zlibDecompressResult type: %s", zlibDecompressResult->ob_type->tp_name);
PCHAR byteArray = NULL;
Py_ssize_t byteArrayLength = 0;
PyString_AsStringAndSize(zlibDecompressResult, &byteArray, &byteArrayLength);
dprintf("[PYTHON] bytes: %p %u", byteArray, byteArrayLength);
PyObject* modData = PyMarshal_ReadObjectFromString(byteArray, byteArrayLength);
dprintf("[PYTHON] modData: %p", modData);
PyObject* mainMod = PyImport_AddModule("__main__");
PyObject* mainDict = PyModule_GetDict(mainMod);
PyModule_AddObject(mainMod, "__modData", modData);
PyRun_SimpleString("exec(__modData[0]);sys.meta_path.append(MetFinder(__modData[1]))");
// the data should be a list of size '2', it contains:
// 1) compiled code which makes up the loader/bootstrapper
// 2) a dictionary of (module name, (is package, compiled code))
//Py_ssize_t modCount = PySequence_Length(modList);
//dprintf("[PYTHON] modCount: %u", modCount);
//for (Py_ssize_t i = 0; i < modCount; ++i)
//{
// PyCodeObject* compiledCode = (PyCodeObject*)PySequence_GetItem(modList, i);
// dprintf("[PYTHON] compiledCode: %p", compiledCode);
// dprintf("[PYTHON] compiledCode type: %s", compiledCode->ob_type->tp_name);
// //CHAR* x; Py_ssize_t s;
// //PyString_AsStringAndSize(compiledCode, &x, &s);
// //dprintf("[PYTHON] compiledCode length: %s", s);
// if (compiledCode != NULL)
// {
// PyObject* codeEvalResult = PyEval_EvalCode(compiledCode, mainDict, mainDict);
// dprintf("[PYTHON] codeEvalResult: %p", codeEvalResult);
// if (codeEvalResult != NULL)
// {
// Py_XDECREF(codeEvalResult);
// }
// Py_XDECREF(compiledCode);
// }
//}
// we now have a reference to a "list of modules", pull it back into C land
//PCHAR cursor = NULL;
//Py_ssize_t libSize = 0;
//PyString_AsStringAndSize(zlibDecompressResult, &cursor, &libSize);
//dprintf("[PYTHON] lib: %p %u", cursor, libSize);
//// get the number of modules, and move the cursor to the start of the module list
//DWORD modCount = *(LPDWORD)cursor;
//cursor += sizeof(DWORD);
//dprintf("[PYTHON] mod count: %u", modCount);
//// we'll be importing stuff in the context of main, so we need a reference to it.
//PyObject* builtinsMod = PyImport_AddModule("__main__");
//for (DWORD i = 0; i < modCount; ++i)
//{
// // extract the module size/length
// DWORD modSize = *(LPDWORD)cursor;
// cursor += sizeof(DWORD);
// dprintf("[PYTHON] including module: %p %u bytes", cursor, modSize);
// PyMarshal_ReadObjectFromString(cursor, modSize);
// // convert the module to a string in python land
// //PyObject* libString = PyString_FromStringAndSize(cursor, modSize);
// // give it a name
// //PyModule_AddObject(PyImport_AddModule("__main__"), "__metimport", libString);
// // import it
// //PyRun_SimpleString("exec(__metimport)");
// // move our cursor along to the next module
// cursor += modSize;
//}
//PyRun_SimpleString("__metimport=None");
}
// now load the baked-in modules
PyErr_Clear();
for (InitFunc* f = &init_funcs[0]; f->func != NULL; f += 1)
{
dprintf("[PYTHON] Running %s", f->name);
f->func();
if (PyErr_Occurred())
{
#ifdef DEBUGTRACE
PyErr_Print();
#endif
dprintf("[PYTHON] %s errored", f->name);
PyErr_Clear();
}
}
}
/*!
@ -100,7 +398,7 @@ DWORD request_python_reset(Remote* remote, Packet* packet)
dprintf("[PYTHON] resetting the interpreter");
Py_Finalize();
Py_Initialize();
initialize_hooks();
python_prepare_session();
packet_transmit_empty_response(remote, packet, ERROR_SUCCESS);
return ERROR_SUCCESS;

@ -7,7 +7,8 @@
#include "../../common/common.h"
VOID initialize_hooks();
VOID python_prepare_session();
VOID python_destroy_session();
DWORD request_python_reset(Remote* remote, Packet* packet);
DWORD request_python_execute_string(Remote *remote, Packet *packet);

@ -11,11 +11,11 @@
#define REFLECTIVEDLLINJECTION_CUSTOM_DLLMAIN
#include "../../ReflectiveDLLInjection/dll/src/ReflectiveLoader.c"
#include "Python.h"
#include "python_commands.h"
// This is the entry point to the python DLL, we proxy to this from our own init
BOOL WINAPI PythonDllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved);
extern BOOL WINAPI PythonDllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved);
extern BOOL WINAPI CtypesDllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvRes);
// this sets the delay load hook function, see DelayLoadMetSrv.h
EnableDelayLoadMetSrv();
@ -30,8 +30,6 @@ Command customCommands[] =
BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved )
{
BOOL bReturnValue = TRUE;
switch( dwReason )
{
case DLL_QUERY_HMODULE:
@ -49,7 +47,9 @@ BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD dwReason, LPVOID lpReserved )
break;
}
return PythonDllMain(hinstDLL, dwReason, lpReserved);
PythonDllMain(hinstDLL, dwReason, lpReserved);
CtypesDllMain(hinstDLL, dwReason, lpReserved);
return TRUE;
}
/*!
@ -63,10 +63,7 @@ DWORD __declspec(dllexport) InitServerExtension(Remote *remote)
dprintf("[PYTHON] Initialising");
Py_IgnoreEnvironmentFlag = 1;
Py_NoSiteFlag = 1;
Py_Initialize();
initialize_hooks();
python_prepare_session();
dprintf("[PYTHON] Registering commands");
command_register_all(customCommands);
@ -82,7 +79,7 @@ DWORD __declspec(dllexport) DeinitServerExtension(Remote *remote)
{
command_deregister_all(customCommands);
Py_Finalize();
python_destroy_session();
return ERROR_SUCCESS;
}

@ -106,7 +106,7 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\_ctypes\libffi_msvc;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;EXT_SERVER_PYTHON_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@ -139,7 +139,7 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='r7_debug|Win32'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\_ctypes\libffi_msvc;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;EXT_SERVER_PYTHON_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@ -183,7 +183,7 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\_ctypes\libffi_msvc;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<TreatWarningAsError>false</TreatWarningAsError>
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
</ClCompile>
@ -221,7 +221,7 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\_ctypes\libffi_msvc;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<TreatWarningAsError>false</TreatWarningAsError>
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
</ClCompile>
@ -251,7 +251,7 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
<Optimization>MinSpace</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>false</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\_ctypes\libffi_msvc;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXT_SERVER_PYTHON_EXPORTS;Py_BUILD_CORE;Py_ENABLE_SHARED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -305,7 +305,7 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
<Optimization>MinSpace</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>false</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\_ctypes\libffi_msvc;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXT_SERVER_PYTHON_EXPORTS;Py_BUILD_CORE;Py_ENABLE_SHARED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -362,7 +362,7 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>false</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\_ctypes\libffi_msvc;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXT_SERVER_PYTHON_EXPORTS;Py_BUILD_CORE;Py_ENABLE_SHARED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -416,7 +416,7 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
<Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<IntrinsicFunctions>false</IntrinsicFunctions>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>..\..\source\ReflectiveDLLInjection\common;..\..\source\extensions\python\include;..\..\source\extensions\python\Modules\_ctypes\libffi_msvc;..\..\source\extensions\python\Modules\zlib;..\..\source\extensions\python\PC;..\..\source\extensions\python\Python;..\..\deps\openssl\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXT_SERVER_PYTHON_EXPORTS;Py_BUILD_CORE;Py_ENABLE_SHARED;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@ -510,14 +510,17 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
<ClCompile Include="..\..\source\extensions\python\Modules\parsermodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\posixmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\rotatingtree.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\selectmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\sha256module.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\sha512module.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\shamodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\signalmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\socketmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\stropmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\symtablemodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\threadmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\timemodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\unicodedata.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\xxsubtype.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\zipimport.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\zlibmodule.c" />
@ -541,6 +544,20 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
<ClCompile Include="..\..\source\extensions\python\Modules\_codecsmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_collectionsmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_csv.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\callbacks.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\callproc.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\cfield.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\libffi_msvc\ffi.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\libffi_msvc\prep_cif.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\libffi_msvc\win32.c">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='r7_debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='r7_release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\malloc_closure.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\stgdict.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\_ctypes.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_functoolsmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_heapqmodule.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\_hotshot.c" />
@ -790,14 +807,25 @@ copy /y "$(TargetDir)$(TargetFileName)" "$(ProjectDir)..\..\output\$(PlatformSho
<ClInclude Include="..\..\source\extensions\python\Parser\tokenizer.h" />
<ClInclude Include="..\..\source\extensions\python\PC\errmap.h" />
<ClInclude Include="..\..\source\extensions\python\PC\pyconfig.h" />
<ClInclude Include="..\..\source\extensions\python\PC\pythonnt_rc.h" />
<ClInclude Include="..\..\source\extensions\python\Python\importdl.h" />
<ClInclude Include="..\..\source\extensions\python\Python\thread_nt.h" />
<ClInclude Include="..\..\source\extensions\python\python_commands.h" />
<ClInclude Include="..\..\source\extensions\python\python_main.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\source\extensions\python\PC\python_nt.rc" />
<ResourceCompile Include="..\..\source\extensions\python\Resource Files\python_core.rc" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\source\extensions\python\Resource Files\python_core.rh" />
</ItemGroup>
<ItemGroup>
<MASM Include="..\..\source\extensions\python\Modules\_ctypes\libffi_msvc\win64.asm">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='r7_debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='r7_release|Win32'">true</ExcludedFromBuild>
</MASM>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">

@ -31,6 +31,9 @@
<Filter Include="Resource Files">
<UniqueIdentifier>{1e26a334-8fbf-470a-a690-ae261dd2dbb4}</UniqueIdentifier>
</Filter>
<Filter Include="Modules\_ctypes">
<UniqueIdentifier>{b0e8f834-fe7a-43ec-aef1-50aa4969cd09}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\source\extensions\python\Include\cobject.h">
@ -414,10 +417,9 @@
<ClInclude Include="..\..\source\extensions\python\Objects\stringlib\fastsearch.h">
<Filter>Objects</Filter>
</ClInclude>
<ClInclude Include="..\..\source\extensions\python\PC\pythonnt_rc.h">
<Filter>Resource Files</Filter>
</ClInclude>
<ClInclude Include="..\..\source\extensions\python\python_commands.h" />
<ClInclude Include="..\..\source\extensions\python\python_main.h" />
<ClInclude Include="resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\source\extensions\python\Modules\_io\_iomodule.c">
@ -961,10 +963,57 @@
<Filter>Modules</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\python_commands.c" />
<ClCompile Include="..\..\source\extensions\python\python_main.c" />
<ClCompile Include="..\..\source\extensions\python\Modules\socketmodule.c">
<Filter>Modules</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\selectmodule.c">
<Filter>Modules</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\unicodedata.c">
<Filter>Modules</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\callbacks.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\callproc.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\cfield.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\malloc_closure.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\stgdict.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\_ctypes.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\libffi_msvc\prep_cif.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\libffi_msvc\win32.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
<ClCompile Include="..\..\source\extensions\python\Modules\_ctypes\libffi_msvc\ffi.c">
<Filter>Modules\_ctypes</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\source\extensions\python\PC\python_nt.rc">
<ResourceCompile Include="..\..\source\extensions\python\Resource Files\python_core.rc">
<Filter>Resource Files</Filter>
</ResourceCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\source\extensions\python\Resource Files\python_core.rh">
<Filter>Resource Files</Filter>
</None>
</ItemGroup>
<ItemGroup>
<MASM Include="..\..\source\extensions\python\Modules\_ctypes\libffi_msvc\win64.asm">
<Filter>Modules\_ctypes</Filter>
</MASM>
</ItemGroup>
</Project>