python无法打开kernel32.lib_Python:kernel32.CreateProcessA()它在做什么?

我目前正在学习调试器以及它们如何停止进程。在

这是我的代码:from ctypes import *

WORD = c_ushort

DWORD = c_ulong

LPBYTE = POINTER(c_ubyte)

LPTSTR = POINTER(c_char)

HANDLE = c_void_p

DEBUG_PROCESS = 0x00000001

CREATE_NEW_CONSOLE = 0x00000010

class STARTUPINFO(Structure):

_fields_ = [

("cb", DWORD),

("lpReserved", LPTSTR),

("lpDesktop", LPTSTR),

("lpTitle", LPTSTR),

("dwX", DWORD),

("dwY", DWORD),

("dwXSize", DWORD),

("dwYSize", DWORD),

("dwXCountChars", DWORD),

("dwYCountChars", DWORD),

("dwFillAttribute",DWORD),

("dwFlags", DWORD),

("wShowWindow", WORD),

("cbReserved2", WORD),

("lpReserved2", LPBYTE),

("hStdInput", HANDLE),

("hStdOutput", HANDLE),

("hStdError", HANDLE),

]

class PROCESS_INFORMATION(Structure):

_fields_ = [

("hProcess", HANDLE),

("hThread", HANDLE),

("dwProcessId", DWORD),

("dwThreadId", DWORD),

]

kernel32 = windll.kernel32

class debugger():

def __init__(self):

pass

def load(path_to_exe):

creation_flags = DEBUG_PROCESS

startupinfo = STARTUPINFO()

processinfo = PROCESS_INFORMATION()

startupinfo.dwFlags = 0x1

startupinfo.wShowWindow = 0x0

startupinfo.cb = sizeof(startupinfo)

if kernel32.CreateProcessA(path_to_exe,None,None,None,None,creation_flags,None,None,byref(startupinfo),byref(processinfo)):

print("[*] Process launched")

print("[*] PID: %d" % (PROCESS_INFORMATION.dwProcessId))

else:

print("[*] Error: 0x%08x." % (kernel32.GetLastError()))

debugger.load("C:\\WINDOWS\\system32\\calc.exe")

每次我运行它,它都会出错。:(我发现之所以会出现这个错误是因为kernel32.CreateProcessA返回的是false。实际上,我现在正在关注grey hat python,在阅读时,我正在将这些代码转换为python3。在

我的问题是,kernel32.CreateProcessA在做什么,为什么返回false,以及如何防止它返回false?在

任何帮助都将不胜感激!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值