2016-10-28 7 views
0

に直面しています。私はPython でプリミティブデバッガのソースコードを実行しようとしていますが、エラーに直面していて、なぜそれがソースコードを持っているのか分かりません。 ありがとうございます。私のpythonデバッガはエラー

my_debugger_defines.py

from ctypes import * 
# Let's map the Microsoft types to ctypes for clarity 
WORD = c_ushort 
DWORD = c_ulong 
LPBYTE = POINTER(c_ubyte) 
LPTSTR = POINTER(c_char) 
HANDLE = c_void_p 
# Constants 
DEBUG_PROCESS = 0x00000001 
CREATE_NEW_CONSOLE = 0x00000010 
# Structures for CreateProcessA() function 
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), 
    ] 

my_debugger.py

from ctypes import * 
from my_debugger_defines import * 
kernel32 = windll.kernel32 
class debugger(): 
    def __init__(self): 
     pass 
    def load(self,path_to_exe): 
     # dwCreation flag determines how to create the process 
     # set creation_flags = CREATE_NEW_CONSOLE if you want 
     # to see the calculator GUI 
     creation_flags = DEBUG_PROCESS 
     # instantiate the structs 
     startupinfo = STARTUPINFO() 
     process_information = PROCESS_INFORMATION() 
     # The following two options allow the started process 
     # to be shown as a separate window. This also illustrates 
     # how different settings in the STARTUPINFO struct can affect 
     # the debuggee. 
     startupinfo.dwFlags = 0x1 
     startupinfo.wShowWindow = 0x0 
     # We then initialize the cb variable in the STARTUPINFO struct 
     # which is just the size of the struct itself 
     startupinfo.cb = sizeof(startupinfo) 
     if kernel32.CreateProcessA(path_to_exe, 
     None, 
     None, 
     None, 
     None, 
     creation_flags, 
     None, 
     None, 
     byref(startupinfo), 
     byref(process_information)): 
      print "[*] We have successfully launched the process!" 
      print "[*] PID: %d" % process_information.dwProcessId 
     else: 
      print "[*] Error: {}".format(kernel32.GetLastError()) 

my_test.py Windowsコンソールでmy_test.pyを実行している

import my_debugger 
debugger = my_debugger.debugger() 
debugger.load("C:\\WINDOWS\\system32\\calcs.exe") 

は私に、この種のエラーを与える

[*] Error: 0x00000002

+0

私は愛する準備ができていません。 – runningviolent

+1

笑ホモは実際に私はどのようにパイソン愛好家が恋人になったのか分かりません! – Millw0

+0

[GetLastError()によって返されたエラーコードからエラーメッセージを取得する方法は?](http://stackoverflow.com/q/1387064/2800918) – CAB

答えて

1

余分な 's'があります。試してみる。

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

ああああ!そのようなルーキーミス:))多くのCABが今働いてくれてありがとう – Millw0

関連する問題