reven2.preview.taint.TaintAccess(object)
class documentationreven2.preview.taint
(View In Hierarchy)
Containing information about the accessed data.
A taint access contains:
reven2.trace.Transition
that accesses the data
TaintedRegisterSlice
or TaintedMemories
to ChangeMarkers
indicating the change. If the access dose not change the taint state,
this map will be empty.
This object is not meant to be constructed directly. It is created by
TaintAccessView
>>> accesses = taint.accesses() >>> for access in accesses.all(): >>> # access is an instance of TaintAccess >>> print(access) Taint access at #7 mov qword ptr [rbp - 0x50], rax Tainted memories: [phy:0x46b5ff0; 8] : gained[tag0,]
Taint access at #20 movaps xmmword ptr [rbp], xmm1 Tainted memories: [phy:0x1bdb4040; 1] : lost[tag1,]
Taint access at #27 lea rax, [rip + 0x3120]
Taint access at #14733764 mov rax, qword ptr [rbp - 0x50] Tainted registers: rax : gained[tag0,]
Taint access at #14733789 mov rax, qword ptr [rsp + 0x90]
Taint access at #14746690 mov qword ptr [rsp + 0x30], r13 Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Method | __init__ | Undocumented |
Method | transition | Property: the transition that caused the change |
Method | has_changes | Returns True if this access change the taint state or
False otherwise. |
Method | tainted_registers | Iterates over each TaintedRegisterSlice
implicated in this taint access and yields a pair of TaintedRegisterSlice
and ChangeMarkers |
Method | tainted_memories | Iterates over each TaintedMemories
implicated in this taint access and yields a pair of TaintedMemories
and ChangeMarkers |
Method | state_before | Get the TaintState
before this access relatively to the taint direction. |
Method | state_after | Get the TaintState
after this access relatively to the taint direction. |
Method | __str__ | Undocumented |
Method | __repr__ | Undocumented |
Property: the transition that caused the change
>>> accesses = taint.accesses() >>> for access in accesses.all(): >>> # access is an instance of TaintAccess >>> print(access.transition) 5 9 13 33 95
Returns | A reven2.trace.Transition . |
Returns True
if this access change the taint state or
False
otherwise.
Returns | A bool |
Iterates over each TaintedRegisterSlice
implicated in this taint access and yields a pair of TaintedRegisterSlice
and ChangeMarkers
>>> accesses = taint.accesses() >>> for access in accesses.all(): >>> # access is an instance of TaintAccess >>> for reg, change_markers in access.tainted_registers(): >>> print(reg) >>> for handle, name in change_markers.gained: >>> print(name) >>> for handle, name in change_markers.lost: >>> print(name) rax tag0 rax tag0 rax tag0
Returns | A generator of (TaintedRegisterSlice ,
ChangeMarkers ). |
Iterates over each TaintedMemories
implicated in this taint access and yields a pair of TaintedMemories
and ChangeMarkers
>>> accesses = taint.accesses() >>> for access in accesses.all(): >>> # access is an instance of TaintAccess >>> for mem, change_markers in access.tainted_memories(): >>> print(mem) >>> for handle, name in change_markers.gained: >>> print(name) >>> for handle, name in change_markers.lost: >>> print(name) phy:0x46b5ff0; 8] tag0 [phy:0x1bdb4040; 1] tag1 [phy:0x46b5ff0; 8] tag0
Returns | A generator of (TaintedMemories ,
ChangeMarkers ). |
Get the TaintState
before this access relatively to the taint direction.
If the taint is a Forward
taint, then the state before is
taint.state_at(access.transition.context_before())
If the taint is a Backward
taint, then the state before is
taint.state_at(access.transition.context_after())
>>> accesses = taint.accesses() >>> for access in accesses.all(): >>> print (access.state_before()) Taint state at Context before #7 Tainted registers: rax : [tag0,] Tainted memories: [phy:0x1bdb4040; 1] : [tag1,]
Taint state at Context before #20 Tainted registers: rax : [tag0,] Tainted memories: [phy:0x46b5ff0; 8] : [tag0,] [phy:0x1bdb4040; 1] : [tag1,]
Taint state at Context before #27 Tainted registers: rax : [tag0,] Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Taint state at Context before #14733764 Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Taint state at Context before #14733789 Tainted registers: rax : [tag0,] Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Taint state at Context before #14746690 Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Returns | A TaintState . |
Get the TaintState
after this access relatively to the taint direction.
If the taint is a Forward
taint, then the state after is
taint.state_at(access.transition.context_after())
If the taint is a Backward
taint, then the state after is
taint.state_at(access.transition.context_before())
>>> accesses = taint.accesses() >>> for access in accesses.all(): >>> print (access.state_after()) Taint state at Context before #8 Tainted registers: rax : [tag0,] Tainted memories: [phy:0x46b5ff0; 8] : [tag0,] [phy:0x1bdb4040; 1] : [tag1,]
Taint state at Context before #21 Tainted registers: rax : [tag0,] Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Taint state at Context before #28 Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Taint state at Context before #14733765 Tainted registers: rax : [tag0,] Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Taint state at Context before #14733790 Tainted memories: [phy:0x46b5ff0; 8] : [tag0,]
Taint state at Context before #14746691
Returns | A TaintState . |