rizinorg / rizin

UNIX-like reverse engineering framework and command-line toolset.
https://rizin.re
GNU Lesser General Public License v3.0
2.72k stars 363 forks source link

Conditional RzIL breakpoints and emulation #4731

Open Rot127 opened 6 days ago

Rot127 commented 6 days ago

Is your feature request related to a problem? Please describe.

ESIL has the ability to break on a certain ESIL expression (aecue). RzIL doesn't yet.

Describe the solution you'd like

Because it doesn't make sense to compare a RzIL expression, we should instead allow to execute until a given expression is evaluated to true. This could be applied to a breakpoint (only break if condition is true) or checked every VM step.

Describe alternatives you've considered

Dropping aecue commands and don't port them to RzIL.

Additional context

None

XVilka commented 6 days ago

Generally it makes sense only to allow simple expressions in this use case, like values of variables/registers/memory.