All Projects → bruce30262 → Libprotobuf Mutator_fuzzing_learning

bruce30262 / Libprotobuf Mutator_fuzzing_learning

Learn how to combine libprotobuf-mutator with libfuzzer & AFL++

Projects that are alternatives of or similar to Libprotobuf Mutator fuzzing learning

Protofuzz
Google Protocol Buffers message generator
Stars: ✭ 171 (+27.61%)
Mutual labels:  protobuf, fuzzer
Protoeasy Go
Simpler usage of protoc. Deprecated.
Stars: ✭ 129 (-3.73%)
Mutual labels:  protobuf
Aflplusplus
The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!
Stars: ✭ 2,319 (+1630.6%)
Mutual labels:  fuzzer
Server Side Extension
A Qlik server-side extension protocol for extending the Qlik built-in expression library with functionality from external calculation engines.
Stars: ✭ 125 (-6.72%)
Mutual labels:  protobuf
Eclipser
Grey-box Concolic Testing on Binary Code
Stars: ✭ 120 (-10.45%)
Mutual labels:  fuzzer
Api Common Protos
A standard library for use in specifying protocol buffer APIs.
Stars: ✭ 127 (-5.22%)
Mutual labels:  protobuf
Protoc Gen Doc
Documentation generator plugin for Google Protocol Buffers
Stars: ✭ 1,792 (+1237.31%)
Mutual labels:  protobuf
Ocaml Protoc
A Protobuf Compiler for OCaml
Stars: ✭ 129 (-3.73%)
Mutual labels:  protobuf
Protostuff
Java serialization library, proto compiler, code generator
Stars: ✭ 1,730 (+1191.04%)
Mutual labels:  protobuf
Rust Protobuf
Rust implementation of Google protocol buffers
Stars: ✭ 1,797 (+1241.04%)
Mutual labels:  protobuf
Luapbintf
Binding Protobuf 3 to Lua 5.3
Stars: ✭ 122 (-8.96%)
Mutual labels:  protobuf
Pants
The Pantsbuild developer workflow system
Stars: ✭ 1,814 (+1253.73%)
Mutual labels:  protobuf
Mrpc
🐿 netty,zookeeper,spring,kyro rpc framework.
Stars: ✭ 128 (-4.48%)
Mutual labels:  protobuf
Rules closure
Closure rules for Bazel
Stars: ✭ 119 (-11.19%)
Mutual labels:  protobuf
Nano
Lightweight, facility, high performance golang based game server framework
Stars: ✭ 1,888 (+1308.96%)
Mutual labels:  protobuf
Fuzzing Survey
The Art, Science, and Engineering of Fuzzing: A Survey
Stars: ✭ 116 (-13.43%)
Mutual labels:  fuzzer
Blade Build
Blade is a powerful build system from Tencent, supports many mainstream programming languages, such as C/C++, java, scala, python, protobuf...
Stars: ✭ 1,722 (+1185.07%)
Mutual labels:  protobuf
Falanx
Generates F# code from protobuf schema for binary and json format
Stars: ✭ 127 (-5.22%)
Mutual labels:  protobuf
Almost Famous
🌟 Almost-Famous(成名之路) ——卡牌游戏开源项目,架构使用SpringBoot+Netty+Maven+SpringCloud来搭建多进程分布式框架,包括Cloud、Unique、Login、Game、Match、Battle 等服务。
Stars: ✭ 131 (-2.24%)
Mutual labels:  protobuf
Sienna Locomotive
A user-friendly fuzzing and crash triage tool for Windows
Stars: ✭ 130 (-2.99%)
Mutual labels:  fuzzer

libprotobuf-mutator_fuzzing_learning

Learn how to combine libprotobuf-mutator with libfuzzer & AFL++

Environment Settings

  • Ubuntu Linux 20.04 64 bit
  • Clang 11.0.1

Install Clang/LLVM & libfuzzer

  • Follow the step in this article and add the toolchain's apt repository in Ubuntu.
  • sudo apt-get install clang-11 libfuzzer-11-dev

Install libprotobuf-mutator

Follow the step in libprotobuf-mutator's readme

Install dependencies

sudo apt-get update
sudo apt-get install protobuf-compiler libprotobuf-dev binutils cmake \
  ninja-build liblzma-dev libz-dev pkg-config autoconf libtool

Compile and test everything:

cd libprotobuf-mutator
mkdir build
cd build
( A cmake command, check the below section )
ninja check # test, might took very long time
ninja # just build, use this if you don't want to wait too long
sudo ninja install # install

Notice
Use the following cmake command to build libprotobuf-mutator-libfuzzer.so.0 and libprotobuf-mutator.so.0 shared library

 cmake .. -GNinja -DCMAKE_C_COMPILER=clang-11 \ 
 -DCMAKE_CXX_COMPILER=clang++-11 \ 
 -DCMAKE_BUILD_TYPE=Debug \ 
 -DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON \ 
 -DBUILD_SHARED_LIBS=ON

To build static libraries, use the following cmake command:
( This will generate libraries that can be linked into shared libraries / normal program )

cmake .. -GNinja -DCMAKE_C_COMPILER=clang-11 \
-DCMAKE_CXX_COMPILER=clang++-11 \
-DCMAKE_BUILD_TYPE=Debug \
-DLIB_PROTO_MUTATOR_DOWNLOAD_PROTOBUF=ON \
-DCMAKE_C_FLAGS="-fPIC" -DCMAKE_CXX_FLAGS="-fPIC"

How to upgrade the environment

  • Upgrade Clang/LLVM & libfuzzer ( install a new version )
  • Upgrade AFL++ ( git pull & rebuild )
  • Upgrade libprotobuf-mutator ( git pull & rebuild )
    • Rebuild and re-install libprotobuf-mutator-libfuzzer.so.0 and libprotobuf-mutator.so.0.
    • Rebuild libprotobuf-mutator-libfuzzer.a and libprotobuf-mutator.a.
  • Re-compile the protobuf with newer protoc and replace those *.cc & *.h with new ones.

Learning

Reference

LICENSE

License: CC BY-NC-SA 4.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].