mirror of https://github.com/geohot/qira
ahh quality, should parameterize the stack
This commit is contained in:
parent
2104fdb0e9
commit
e66ab69a9b
|
@ -347,12 +347,15 @@ def slice(trace, inclnum):
|
|||
def get_loads(clnum):
|
||||
return set(map(lambda x: x['address'], filter(is_load, trace.db.fetch_changes_by_clnum(clnum, 100))))
|
||||
|
||||
|
||||
|
||||
clnum = inclnum
|
||||
st = get_loads(clnum)
|
||||
cls = [clnum]
|
||||
|
||||
# so only things before this can affect it
|
||||
while clnum > max(0, inclnum-100):
|
||||
st.discard(0x10) # never follow the stack, X86 HAXX
|
||||
if len(trace.db.fetch_changes_by_clnum(clnum, 100)) > 20:
|
||||
break
|
||||
overwrite = st.intersection(get_stores(clnum))
|
||||
|
@ -371,7 +374,7 @@ def slice(trace, inclnum):
|
|||
clnum -= 1
|
||||
|
||||
cls = set(cls)
|
||||
cls.remove(inclnum)
|
||||
cls.discard(inclnum)
|
||||
return list(cls)
|
||||
|
||||
|
||||
|
|
|
@ -3,3 +3,9 @@ def ghex(a):
|
|||
return None
|
||||
return hex(a).strip("L")
|
||||
|
||||
def fhex(a):
|
||||
try:
|
||||
return int(a, 16)
|
||||
except:
|
||||
return None
|
||||
|
||||
|
|
|
@ -102,8 +102,8 @@ def forkat(forknum, clnum, pending):
|
|||
REGSIZE = program.tregs[1]
|
||||
dat = []
|
||||
for p in pending:
|
||||
daddr = int(p['daddr'], 16)
|
||||
ddata = int(p['ddata'], 16)
|
||||
daddr = fhex(p['daddr'])
|
||||
ddata = fhex(p['ddata'])
|
||||
if len(p['ddata']) > 4:
|
||||
# ugly hack
|
||||
dsize = REGSIZE
|
||||
|
@ -197,7 +197,7 @@ def getchanges(forknum, address, typ):
|
|||
if forknum != -1 and forknum not in program.traces:
|
||||
return
|
||||
debug()
|
||||
address = int(address, 16)
|
||||
address = fhex(address)
|
||||
|
||||
if forknum == -1:
|
||||
forknums = program.traces.keys()
|
||||
|
@ -245,7 +245,7 @@ def getmemory(forknum, clnum, address, ln):
|
|||
if clnum == None or address == None or ln == None:
|
||||
return
|
||||
debug()
|
||||
address = int(address, 16)
|
||||
address = fhex(address)
|
||||
dat = trace.fetch_memory(clnum, address, ln)
|
||||
ret = {'address': address, 'len': ln, 'dat': dat, 'is_big_endian': program.tregs[2], 'ptrsize': program.tregs[1]}
|
||||
emit('memory', ret)
|
||||
|
|
|
@ -17,7 +17,7 @@ body {
|
|||
}
|
||||
|
||||
.halfhighlight {
|
||||
background: rgba(255, 119, 119, 0.2);
|
||||
background: rgba(255, 119, 119, 0.3);
|
||||
}
|
||||
|
||||
.control {
|
||||
|
|
Loading…
Reference in New Issue