-
-
Notifications
You must be signed in to change notification settings - Fork 374
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Redesign of ESIL, or use of alternatives #277
Comments
While I agree with the general idea, P-code is very old, OpenREIL as well (OpenREIL project is recent but REIL itself is very old). BIL is more modern but still substituted by the Knowledge Base. Falcon opted for the modification of RREIL (not to mistake it as REIL - it's completely different) instead. Also worth checking Radeco middle layer as well. I am strongly in favor of something resembling Core Theory (something like an extension of SMT) and Knowledge Base, see more at BAP documentation: |
This is what I had in mind if we modify the ESIL itself:
|
"Falcon IL does not support floating point operations."
As I understand it, this is an "AST" of the ESIL expression?
okay, i love it In theory, if we use a simple IL, could we compute the side effects with datalog?
To be honest, I don't understand what it says. |
"ESIL handling" ?
yes, maybe some new operations
+1
Can I have more details? |
Yes, parsing, running a ESIL VM, maybe some other API. Whatever we choose it might be beneficial to provide the simple C library with the stable API for other projects to use. This way more tools apart from Rizin and Cutter could use this library for emulation purpose.
Currently ESIL is a continuous stream without proper means to identify what particular instruction was lifted into what particular case. We could add a way to embed location, maybe source-level information into the IL. Location information should be compact though not to add too much overhead on already slow uplifting and emulation.
TLDR; Core Theory is the SMT-like representation with Effects. And the corresponding Effects (included in the Minimal theory): It has also the floating point operations representation: All these (along with a few others) merge into the whole Core Theory:
The sources are located at |
+1
okay
I will look at it PS: I am working on a new ESIL specification. |
See also rizinorg/cutter#1133 for the visualization within Cutter. |
This is the list of plugins that currently do uplifting to ESIL (
The rest:
|
Is your feature request related to a problem? Please describe.
ESIL is imperfect (slow, no float support, no well tested).
In theory, if Rizin used a good IL, we could have a simplify analysis (as in ghidra).
"By modeling in this way, the analysis of different processors is put into a common framework, facilitating the development of retargetable analysis algorithms and applications" - ghidra
Describe the solution you'd like
Using alternative IL:
Describe alternatives you've considered
Modify the ESIL specification...
Additional context
https://ghidra.re/courses/languages/html/pcoderef.html
The text was updated successfully, but these errors were encountered: