Giter Site home page Giter Site logo

esil-rs's Introduction

esil.rs

Build Status Build status Coverage Status

An ESIL Toolchain written in rust. For more information on ESIL, its usage and semantics, please check documentation.

Design

This repository is mainly divided into three modules. With very specific function for each. The ideal end-goal is to be able to use ESIL for a specific purpose by implementing only a particular component and reuse every other. Below is the outline for the same.

  • lexer.rs: Used to break up input ESIL string into Tokens. If ESIL is the Input Language of your choice, then this lexer can be reused. A new lexer has to be written only if the input language is something other than ESIL.

  • parser.rs: Used to parse the Tokens generated by the lexer. The InType of Parse should match the Token type for Tokenize. As long as your lexer outputs Tokens (as defined in lexer.rs), this component can be reused to process the tokens that your lexer produces. The parser does not work as a standalone as a standalone and is to be embeded into an Evaluator. The parser does most of the heavy work in translating ESIL, leaving the Evaluator to only evaluate the Tokens that it returns to it.

  • evaluator: The evaluator is the most interesting part of all. The evaluator can be anything from an ESIL-VM, to a ESIL to REIL converter, Symbolic Execution engine etc. It is upto the evaluator to decide what to do with the tokens that are returned by the parser. The implementation of the evaluator depends on the use case. Usually, this is the only component that is to be implemented when using ESIL for any analysis.

(TODO) To see a sample usage of an evaluator, check vm.rs or radeco-lib

Todo

  • Default Evaluator (ESIL-VM) implementation
  • More usage examples and auto-documentation

License

The code in this repository is licensed under the 3-clause BSD. Check LICENSE for a copy of the same.

esil-rs's People

Contributors

dlrobertson avatar kriw avatar marcograss avatar mm7 avatar notwearingpants avatar radare avatar sushant94 avatar xvilka avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esil-rs's Issues

Link to radare2 docs is broken

The link to radare2 docs of ESIL is broken, they've moved the disassembling folder in a src folder,
so the new link is https://github.com/radareorg/radare2book/blob/master/src/disassembling/esil.md

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.