
when i load a program for debugging by pydbg i can't set breakpoint, i give this error :
Traceback (most recent call last):
File "asm.py", line 25, in <module>
dbg.bp_set(recv)
File "C:\Python27\lib\site-packages\pydbg\pydbg.py", line 568, in bp_set
raise pdx("Failed setting breakpoint at %08x" % address)
pydbg.pdx.pdx: Failed setting breakpoint at 7e4507ea
7e4507ea <== this is address from MessageBoxA API in USER32.dll , then return me true address for set breakpoint but not set breakpoint and pause process
in follow you can see my code :
from pydbg import *
from pydbg.defines import *
def handler_breakpoint (pydbg):
if pydbg.first_breakpoint:
return DBG_CONTINUE
print "ws2_32.recv() called from thread %d @%08x" % (pydbg.dbg.dwThreadId, pydbg.exception_address)
dbg = pydbg()
dbg.set_callback(EXCEPTION_BREAKPOINT, handler_breakpoint)
dbg.load("C:\\Python27\\TestMessageBox.exe")
dbg.debug_event_iteration()
dbg.run()
recv = dbg.func_resolve("USER32.dll", "MessageBoxA")
dbg.bp_set(recv)
dbg.debug_event_loop()
but this problem just is for dbg.load , if i use dbg.attach i haven't this problem and i can give control of program and set breakpoint in openrce site was this subject http://www.openrce.org/forums/posts/232 pedram amini answer : That snippet was really there to demonstrate the ease of use. Taking a look at it I see there are two silly errors (I'll fix this in the next release of the documentation). The last line should be dbg.xxxx and the log() function is not defined, switch it to a print. ie:
then write some line code for set breakpoint by attach method and i test this code will work
in follow you can see python code for set breakpoint by attach method ( write by pedram amini ) :
from pydbg import *
from pydbg.defines import *
def handler_breakpoint (pydbg):
# ignore the first windows driven breakpoint.
if pydbg.first_breakpoint:
return DBG_CONTINUE
print "ws2_32.recv() called from thread %d @%08x" % (pydbg.dbg.dwThreadId, pydbg.exception_address)
return DBG_CONTINUE
dbg = pydbg()
# register a breakpoint handler function.
dbg.set_callback(EXCEPTION_BREAKPOINT, handler_breakpoint)
dbg.attach(1780)
recv = dbg.func_resolve("ws2_32", "recv")
dbg.bp_set(recv)
dbg.debug_event_loop()
please help me for resolving this problem with load method , i need working by load method
thanks regards