gpt4 book ai didi

来自 Gray Hat Python 的 PythonDebugger

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:09 25 4
gpt4 key购买 nike

我正在阅读 Gray Hat Python我从书中复制了代码,但它似乎不起作用。其他人也对这本书有问题,但不是在我所处的阶段。我从这里复制了书中描述的 my_debugger_defines.py:http://dpunkt.de/leseproben/3245/Quellcodes.zip里面也有my_debugger.py,我也试了,不行。是的,我根据需要使用 Python 2.5问题是它显示:“[*] 无法附加到进程。有一个错误”老实说,我不知道问题出在哪里。这是我的 my_debugger.py 版本(不用担心德语注释)

from ctypes import *
from my_debugger_defines import *

kernel32 = windll.kernel32

class debugger():

def __init__(self):
self.h_process = None
self.pid = None
self.debugger_active = False

def load(self, path_to_exe):
#Bestimmt wie der Prozess zu erzeugen ist, zb CREATE_NEW_CONSOLE
creation_flags = DEBUG_PROCESS
#Strukturen instanzieren
startupinfo = STARTUPINFO()
process_information = PROCESS_INFORMATION()
#die beiden flags ermoeglichen es den prozess in einem eigenen fenster da zu stellen
startupinfo.dwFlags = 0x1
startupinfo.wShowWindow = 0x0
#cb Countbyte
startupinfo.cb = sizeof(startupinfo)

if kernel32.CreateProcessA(path_to_exe,
None,
None,
None,
None,
creation_flags,
None,
None,
byref(startupinfo),
byref(process_information)
):
print "[*] Process erfolgreich gestarted"
print "[*] PID: %d" % process_information.dwProcessId
else:
print "[*] Erorr: 0x%08x" % kernel32.GetLastError()

#Anfordern des gewuenschten Access fuer einen Prozess mit der angegeben pid
def open_process(self, pid):
h_process = kernel32.OpenProcess(PROCESS_ALL_ACCESS,False,pid)
return h_process

def attach(self, pid):
#oeffnen des Processhandels mit dem gewuenschten recht
self.h_process = self.open_process(pid)

#Versuch sich an den Process anzukopeln
if kernel32.DebugActiveProcess(pid):
self.debugger_active = True
self.pid = int(pid)
else:
print "[*] Unable to attach to the process"

def run(self):
#Waren auf DebugEvents
while self.debugger_active:
self.get_debug_event()

def get_debug_event(self):
debug_event = DEBUG_EVENT()
continue_status = DBG_CONTINUE

if kernel32.WaitForDebugEvent(byref(debug_event), INFINITE):
raw_input("Press a key to continue...")
self.debugger_active = False
kernel32.ContiuneDebugEvent(\
debug_event.dwProcessId, \
debug_event.dwThreadId, \
continue_status)


def detach(self):
if kernel32.DebugActiveProcessStop(self.pid):
print "[*] Finished debugging. Exiting..."
return True
else:
print "Error"
return False

这是我用来测试的代码

import my_debugger

debugger = my_debugger.debugger()

pid = raw_input("Enter PID of process to attach to:")

debugger.attach(int(pid))

debugger.detach()

感谢您的帮助:)

最佳答案

如果您运行的是 Windows 7(64 位操作系统),请从 Windows/sysWOW64 目录运行 calc,这是 32 位文件,您可以通过查看任务管理器来告诉它 calc 的 32 位版本,并且它将在 32 位版本旁边显示 *32,无论如何,当我使用该计算器时,该程序对我有用

关于来自 Gray Hat Python 的 PythonDebugger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20807108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com