Package vdb :: Package recon :: Module dopestack
[hide private]
[frames] | no frames]

Source Code for Module vdb.recon.dopestack

 1  '''
 
 2  A quick set of tools for doing stack doping.
 
 3  ''' 
 4  import vtrace 
 5  
 
6 -def dopeThreadStack(trace, threadid):
7 curthread = trace.getCurrentThread() 8 try: 9 trace.selectThread(threadid) 10 sp = trace.getStackCounter() 11 map = trace.getMemoryMap(sp) 12 if map == None: 13 raise Exception('Thread %d has invalid stack pointer 0x%.8x' % (threadid, sp)) 14 15 mapva, mapsize, mperms, mfname = map 16 17 dopesize = sp - mapva 18 trace.writeMemory(mapva, 'V' * dopesize) 19 20 except Exception, e: 21 print 'dopeThreadStack Failed On %d' % threadid 22 trace.selectThread(curthread)
23
24 -def dopeAllThreadStacks(trace):
25 ''' 26 Apply stack doping to all thread stacks. 27 ''' 28 for threadid in trace.getThreads().keys(): 29 dopeThreadStack(trace, threadid)
30
31 -class ThreadDopeNotifier(vtrace.Notifier):
32
33 - def notify(self, event, trace):
35 36 dopenotif = ThreadDopeNotifier() 37
38 -def enableEventDoping(trace):
39 trace.registerNotifier(vtrace.NOTIFY_CONTINUE, dopenotif)
40
41 -def disableEventDoping(trace):
42 trace.deregisterNotifier(vtrace.NOTIFY_CONTINUE, dopenotif)
43