angr/claripy

z3.Array support

bannsec opened this issue · 2 comments

When dealing with very large table lookups, z3.Array is a huge improvement in performance. It would be great if symbolic memory read strategy could be updated to use it, but even simply having the ability to use those primitives with claripy objects (for instance, inside custom user hooks) would be quite beneficial.

Information on Arrays can be found here: https://rise4fun.com/z3/tutorialcontent/guide

Mainly, it comes down to stuff like

table = z3.Array(<args>)
table = z3.Store(table, 0, 1)
#etc

# Lookup becomes
table[sym_var] 

iirc there isn't a good z3 theory that we can use which combines bitvector arithmetic and arrays, which makes this highly problematic to integrate into symbolic execution. I agree it would be nice to have in claripy, though. Unfortunately, there isn't really any manpower available for such a project at the moment. If anyone wanted to take this issue, they would probably want to model it after the relevant parts of the PR which added string support.

This issue has been marked as stale because it has no recent activity. Please comment or add the pinned tag to prevent this issue from being closed.