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:
parent
126c3b8e07
commit
007afeae2a
c/meterpreter
.gitignore
source/extensions/python
workspace/ext_server_python
1
c/meterpreter/.gitignore
vendored
1
c/meterpreter/.gitignore
vendored
@ -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)
|
||||
|
BIN
c/meterpreter/source/extensions/python/Resource Files/python_core.cz
Executable file
BIN
c/meterpreter/source/extensions/python/Resource Files/python_core.cz
Executable file
Binary file not shown.
3
c/meterpreter/source/extensions/python/Resource Files/python_core.rc
Executable file
3
c/meterpreter/source/extensions/python/Resource Files/python_core.rc
Executable file
@ -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>
|
Loading…
x
Reference in New Issue
Block a user