Coder Social home page Coder Social logo

dvm's Introduction

DVM64: A Symbolic Execution Engine

DVM64 is a C# project that serves as a symbolic execution engine, translating AMD64 instructions into Z3 expressions. It leverages various libraries such as Iced.Intel and Microsoft.Z3 to achieve this.

Overview

Project is relatively simple to run against whatever you want, just set the appropriate path and relative address to what you want to analyze and run. It resonably emulates memory operations, reading from the binary, arithmetic, flags, stack read and write, both full sized and partials.

Inspiration

I was originally inspired by a friend who wanted to remain anonymous who worked on a project for VMP2 and decided to try my hand against VMP3 using the approach shown in this project. Huge shoutout to Nitr0-G and his project here which is where to concept came from.

Problems

The usual sorts of problems that you have in a trace-based devirtualization effort with some bonus ones

  • (Probably) incorrect handeling of instruction semantics
  • Path explosion on non-opaque branches (never got to far enough into this to bother writing logic for it)
  • Actually compiling back to something useful from Z3 AST
  • ??? Probably some other things

Shouts

  • Colton
  • NaC-L
  • Brainlets

dvm's People

Contributors

kyle-elliott avatar

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.