import my_debugger
from my_debugger_defines import *
debugger = my_debugger.debugger()
pid = raw_input("Enter the PID of the process to attach to: ")
debugger.attach(int(pid))
list = debugger.enumerate_threads()
for thread in list:
thread_context = debugger.get_thread_context(thread)
print "[*] Dumping registers for thread ID: 0x%08x" % thread
print "[**] EIP: 0x%08x" % thread_context.Eip
print "[**] ESP: 0x%08x" % thread_context.Esp
print "[**] EBP: 0x%08x" % thread_context.Ebp
print "[**] EAX: 0x%08x" % thread_context.Eax
print "[**] EBX: 0x%08x" % thread_context.Ebx
print "[**] ECX: 0x%08x" % thread_context.Ecx
print "[**] EDX: 0x%08x" % thread_context.Edx
print "[*] END DUMP"
debugger.detach()
Выше моя тестовая программа, и выдает «Ие» объект не итерация ошибки и ссылка Строка 12:«BOOL» не итерация, например, Gray Hat Python
for thread in list:
Я сделал некоторые исследования на итерируемых объектах и в основном обнаружил, что он должен уметь повторять себя с разными значениями (пожалуйста, поправьте меня, если я ошибаюсь, у меня очень слабые знания программирования). Я не знаю, как исправить код, чтобы сделать эту работу. Я сделал много поисковых запросов, и я недостаточно опытен, чтобы ссылаться на аналогичную проблему и применять ее к своему собственному коду. Это код прямо из книги, поэтому мне просто интересно, сделал ли я простую ошибку или сложнее.
Кроме того, здесь есть определенная функция для Перечислять нитей
def enumerate_threads(self):
thread_entry = THREADENTRY32()
thread_list = []
snapshot = kernel32.CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, self.pid)
if snapshot is not None:
thread_entry.dwSize = sizeof(thread_entry)
success = kernel32.Thread32First(snapshot, byref(thread_entry))
while success:
if thread_entry.th32OwnerProcessID == self.pid:
thread_list.append(thread_entry.th32ThreadID)
success = kernel32.Thread32Next(snapshot, byref(thread_entry))
kernel32.CloseHandle(snapshot)
return thread_list
else:
return False
Пожалуйста, дайте мне знать, если вам нужно больше информации. Я ценю любую помощь. Заранее спасибо.
В дополнение к любым ответам вы почти наверняка не хотите переменную с именем 'list'. Он тень встроенный. – geoffspear