Git Product home page Git Product logo

baresifter's Introduction

Hi everyone, I'm Julian (@blitz) ๐Ÿ‘‹. I'm a low-level Rust and C++ developer with 10+ years of experience. I've worked on hypervisors, firmware code, operating systems including microkernels, drivers, and more. In the dark past, I also enjoyed writing Common Lisp.

I have a blog about weird x86 details (and other things that interest me). I co-host the syslog podcast about operating system topics (but it's sleeping right now). I occasionally talk at FOSDEM (1, 2).

Lately, I enjoy building systems with Nix and help with bringing UEFI Secure Boot to NixOS.

I'm happy to collaborate on anything regarding operating systems, Rust, RISC-V, ... I'm eager to learn about quality software engineering and the social side of engineering.

If you want to chat with me, ping me on:

baresifter's People

Contributors

blitz avatar rurban avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

baresifter's Issues

Some prefixes aren't sifted at all?

It looks like the tool skips scanning all prefixes somehow (looking at the logs generated)?

They might explode the search space somewhat, but they might also have different encodings and length affecting of the instructions (immediate size and modr/m size differences for example).
So that mainly affects operand and address and perhaps also REX on x86_64 specifically (which is currently detected as a prefix incorrectly on x86 as well, fixed in my repository).

Making the Analyzer filter specified prefixes out?

Is it possible to make the Analyzer filter out some of the prefix groups in it's results somehow, like I implemented in my own fork of Baresifter (implemented for the Baresifter output, but not for Analyzer input yet (don't know the language that well))?

So far I've (see git pull request from my own Baresifter fork) implemented the possiblity to:

  • Execute on any CPU down to i386.
  • Filter out prefix groups that are detected as prefixes (allowing for older CPUs not to detect the REX prefix when it isn't supported) using a bitmask (bit 0 = group 0, bit 1 = group 1 etc. till group 3, then group 4 is the REX prefix (allows x86 40-4F INC/DEC instructions to be sifted)). Clearing the bitmask bit (set by default) in the parameter causes it to be excluded from the detected prefixes.
  • Skip prefix groups (based on the above detection results, by compating against the bitmask) from the results. Another bitmask for this (same format as above) causes it to skip the instruction if the bit is cleared for any of detected prefixes (so detected because of detect bitmask 1(or default, which is 1 for any of the bits) so the detected prefix causes the cleared bit in the second mask (the used bitmask) to exclude if said bit in the used bitmask bit is cleared.
  • Converted the prefix LUT into a class to be able to configure the filtering behaviour of detected prefixes.

Is it possible to add the same logic to the Analyzer (so detecting specified prefixes and excluding them from results if the used prefix bit is cleared) based on the inputted (already filtered) text file containing Baresifter's output?

Support x86-32 to fuzz emulators that don't support x86-64

I would like to fuzz MAME's i386 core using this tool, but unfortunately, this only works on 64-bit CPUs, and MAME's emulation simply hasn't gotten that far yet. I also can't run sandsifter since most modern Unices require at least a Pentium if not a Pentium Pro to install, and MAME's emulation of PCs based on those CPUs is shoddy currently at best.

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.