查找远程进程的寄存器值 - pydbg

逆向工程 调试 Python
2021-06-11 20:07:12

如何使用 python pydbg 或任何其他可以做到这一点的模块在特定地址找到另一个进程的寄存器值?

让我们说:

Address               opcode
006122CB              mov eax, [ecx+08]

所以,我想在这个地址找到ecx寄存器的值。

Windows 7 x64 位

程序 x32 位

1个回答
:\>cat memaccess.py
from pydbg import *
from pydbg.defines import *

def handler_breakpoint (pydbg):
   if pydbg.first_breakpoint:
      return DBG_CONTINUE

   context = dbg.get_thread_context(dbg.h_thread)
   print "eip = %08x" % context.Eip
   print "edi = %08x" % context.Edi
   return DBG_CONTINUE

dbg = pydbg()
dbg.set_callback(EXCEPTION_BREAKPOINT, handler_breakpoint)
dbg.load("c:\\windows\\system32\\calc.exe")
dbg.bp_set(0x101248a)
dbg.resume_all_threads()
pydbg.debug_event_loop(dbg)

:\>python memaccess.py
eip = 0101248a
edi = 7c80b741

用windbg确认

:>cdb -c "bp 0x101248a;g;r Edi;q" 计算

0:000> cdb: Reading initial command 'bp 0x101248a;g;r Edi;q'

Breakpoint 0 hit
edi=7c80b741
quit:

:\>