Note that to compile c files, you need a riscv cross-compiler.
antimony's Introduction
antimony's People
antimony's Issues
Parsing binary files
- Reading binary data (.data section)
- Reading and parsing instructions (.text section)
Use readelf/objdump and a lookup table. RISCV is easy, every instruction is 32 bits!
Make vulnerable programs
Riscv instruction "emulator" to find results of expressions
Constraint solver
The "emulator" #3 will also output a number of constraints which continuously need to be solved.
- Figure out a representation of constraints which the "emulator" will output
Symbolic store
- Large hashmap mapping addresses to values/symbols
- Possibly also include registers in this structure
path constraints
Classify instructions
Instructions need to be classified as:
- Branching
- Conditional branching (here the symbolic executor needs to fork)
- Writing to memory (mutually exclusive with reading to memory AFAIK, check this). Not mutually exclusive with branches/conditional branches
- Reading from memory (mutually exclusive with writing to memory AFAIK, check this). Not mutually exclusive with branches/conditional branches
- Possibly see register accesses as memory, or at least make it part of the memory storage system since registers can also just contain variables and symbolic variables
Don't forget that code is also part of memory and technically readable. This forms part of a number of exploits so needs to be taken into account
Document the use of RISCV in the report
Sicco suggested we should do it to have a nice start for the report.
Emulate OS and libraries
Emulate OS:
User I/O (input)
File system
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.