Python Ctypes Windows访问冲突-读取内存位置
我正在用python编写一个应用程序,该应用程序通过COM使用DeviceAre用户模式挂钩引擎。我挂接的函数之一是CreateProcessA,但我似乎在将适当的指针从挂接的函数传递到ctypes kernel32.CreateProcess调用时遇到了问题。我的目标是停止对CreateProcess的合法调用,并在挂起状态下重新创建它 如果需要,函数参数的Deviceare文档如下: 此外,创建过程的MSDN: 下面是我的ctypes调用,在此之前我没有实例化任何东西,也没有使用“args”设置函数定义,这种情况下有必要吗 “parameters”是DeviceAre中的一个对象,包含传递给挂钩函数(CreateProcessA)的函数参数 传递给新CreateProcess调用的我的错误和一些有用的/类型化参数:Python Ctypes Windows访问冲突-读取内存位置,python,windows,hook,ctypes,usermode,Python,Windows,Hook,Ctypes,Usermode,我正在用python编写一个应用程序,该应用程序通过COM使用DeviceAre用户模式挂钩引擎。我挂接的函数之一是CreateProcessA,但我似乎在将适当的指针从挂接的函数传递到ctypes kernel32.CreateProcess调用时遇到了问题。我的目标是停止对CreateProcess的合法调用,并在挂起状态下重新创建它 如果需要,函数参数的Deviceare文档如下: 此外,创建过程的MSDN: 下面是我的ctypes调用,在此之前我没有实例化任何东西,也没有使用“args
lpApplicationName | LPCSTR | ""
lpCommandLine | LPSTR | "python C:\Users\user\PycharmProjects\testing\API_tests_2.py"
lpProcessAttributes | LPSECURITY_ATTRIBUTES | N/A
lpThreadAttributes | LPSECURITY_ATTRIBUTES | N/A
bInheritHandles | BOOL | 1
dwCreationFlags | DWORD | 0
lpEnvironment | LPVOID | N/A
lpCurrentDirectory | LPCSTR | ""
lpStartupInfo | LPSTARTUPINFOA | 0x33eb90
lpProcessInformation | LPPROCESS_INFORMATION | 0x33eb60
File "C:\Users\user\PycharmProjects\testing\EventHandlers.py", line 299, in OnFunctionCalled
ctypes.POINTER(ctypes.c_ulong)))
WindowsError: exception: access violation reading 0x000000000033EBF0
有时,访问冲突的位置位于LpStutupFin的开头,在其中间的其他时间。我不知道为什么,除非我的环境出了什么问题
我已确认LPSTARTUPINFO和LPPROCESS_信息在调试器中的位置正确 我对Deviceare一无所知,但如果它在另一个进程中挂接调用,它应该提供一种读取/修改参数的方法,然后恢复调用。当然,如果指向的缓冲区位于另一个进程中,那么在当前进程中直接使用指针是没有意义的,在当前进程中指针将指向任意内存。但是,我再次怀疑这个挂钩API是如何使用的。在挂钩ansi版本和检查宽字符串时要小心。
lpApplicationName | LPCSTR | ""
lpCommandLine | LPSTR | "python C:\Users\user\PycharmProjects\testing\API_tests_2.py"
lpProcessAttributes | LPSECURITY_ATTRIBUTES | N/A
lpThreadAttributes | LPSECURITY_ATTRIBUTES | N/A
bInheritHandles | BOOL | 1
dwCreationFlags | DWORD | 0
lpEnvironment | LPVOID | N/A
lpCurrentDirectory | LPCSTR | ""
lpStartupInfo | LPSTARTUPINFOA | 0x33eb90
lpProcessInformation | LPPROCESS_INFORMATION | 0x33eb60
File "C:\Users\user\PycharmProjects\testing\EventHandlers.py", line 299, in OnFunctionCalled
ctypes.POINTER(ctypes.c_ulong)))
WindowsError: exception: access violation reading 0x000000000033EBF0