Git Product home page Git Product logo

wineaflplusplusdemo's Introduction

WineAFLplusplusDEMO

Note: this feature will be integrated soon in AFL++ after proper testing with the -W command line switch

A set of helpers and examples to fuzz Win32 binaries with AFL++ QEMU

Requirements

To fuzz Win32 PE applications with AFL++ QEMU you must ensure that your Linux distribution is able to run Wine without preloader.

Check it simply typing:

$ WINELOADERNOEXEC=1 wine cmd

You need also python3 and the pefile package.

Fuzz

Clone the master branch of AFL++ and build qemu_mode (use CPU_TARGET=i386 for this example).

Copy the afl-wine-trace script into the AFL++ path or export AFL_PATH.

Wine installs some signal handlers for exception handling but for fuzzing we want to disable them and let the fuzzed program crash.

Build unsigation with make and copy unsigation32.so and unsigation64.so into the same directory of afl-wine-trace.

To fuzz a PE run it like in the following example with pnginfo.exe:

AFL_SKIP_BIN_CHECK=1 ~/AFLplusplus/afl-fuzz -i in/ -o out -d -m none -- ~/AFLplusplus/afl-wine-trace ./pnginfo.exe @@

AFL_SKIP_BIN_CHECK is needed cause afl-wine-trace is not a binary. Without -m none the probability that Wine generates an ENOMEM is high.

The following screen should be familiar to you:

expic

Make sure that the program does not need user interaction, this is common for Windows programs. For an example on how to handle them when the interation is useless, the the djpeg example.

wineaflplusplusdemo's People

Contributors

andreafioraldi avatar

Watchers

 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.