def __init__(self, fn, forknum, program, r1, r2, r3): self.forknum = forknum self.program = program self.db = qiradb.Trace(fn, forknum, r1, r2, r3) self.load_base_memory() # analysis stuff self.maxclnum = None self.minclnum = None self.flow = None self.dmap = None self.maxd = 0 self.analysisready = False self.picture = None self.needs_update = False self.strace = [] self.mapped = [] threading.Thread(target=self.analysis_thread).start()
import qiradb import time #print dir(qiradb) LIMIT = 10000 #print "new_trace:", qiradb.new_trace("/tmp/qira_logs/0", 0, 4, 16) #time.sleep(100000.0) # register size = 4, register count = 9 t = qiradb.Trace("hello_trace", 0, 4, 9, False) print "trace created" while not t.did_update(): print "waiting..." time.sleep(0.1) # get max change ret = t.get_maxclnum() print "maxclnum:", ret assert ret == 116 # get min change ret = t.get_minclnum() print "minclnum:", ret assert ret == 0 # who loads argc? ret = t.fetch_clnums_by_address_and_type(0xf6fff090, 'L', 0, LIMIT) print "load argc:", ret assert ret == [0, 2]