From d95736bc9d30176044e8a19968b60abd8cfa0433 Mon Sep 17 00:00:00 2001 From: Nguyen Anh Quynh Date: Sat, 13 Apr 2019 11:11:58 +0800 Subject: [PATCH] fuzz: add fuzz_decode_platform.c --- .gitignore | 1 + suite/fuzz/Makefile | 14 ++++++++++++-- suite/fuzz/fuzz_decode_platform.c | 32 +++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 suite/fuzz/fuzz_decode_platform.c diff --git a/.gitignore b/.gitignore index c6c40729..1d328b09 100644 --- a/.gitignore +++ b/.gitignore @@ -117,6 +117,7 @@ fuzz_harness test_iter_benchmark fuzz_bindisasm fuzz_disasm +fuzz_decode_platform capstone_get_setup diff --git a/suite/fuzz/Makefile b/suite/fuzz/Makefile index 3370df37..25d42db0 100644 --- a/suite/fuzz/Makefile +++ b/suite/fuzz/Makefile @@ -42,11 +42,12 @@ SOURCES = fuzz_disasm.c drivermc.c fuzz_harness.c driverbin.c OBJS = $(addprefix $(OBJDIR)/,$(SOURCES:.c=.o)) BINARY = $(addprefix $(TESTDIR)/,fuzz_disasm$(BIN_EXT)) BINARYBIN = $(addprefix $(TESTDIR)/,fuzz_bindisasm$(BIN_EXT)) +PLATFORMDECODE = $(addprefix $(TESTDIR)/,fuzz_decode_platform$(BIN_EXT)) -all: $(BINARY) $(BINARYBIN) +all: $(BINARY) $(BINARYBIN) $(PLATFORMDECODE) clean: - rm -rf fuzz_harness $(OBJS) $(BINARY) $(BINARYBIN) $(OBJDIR)/lib$(LIBNAME).* $(OBJDIR)/$(LIBNAME).* + rm -rf fuzz_harness $(OBJS) $(PLATFORMDECODE) $(BINARY) $(BINARYBIN) $(OBJDIR)/lib$(LIBNAME).* $(OBJDIR)/$(LIBNAME).* $(BINARY): fuzz_disasm.o drivermc.o @mkdir -p $(@D) @@ -66,6 +67,15 @@ else $(link-static) endif +$(PLATFORMDECODE): fuzz_decode_platform.o + @mkdir -p $(@D) +ifeq ($(V),0) + $(call log,LINK,$(notdir $@)) + @$(link-static) +else + $(link-static) +endif + $(OBJDIR)/%.o: %.c @mkdir -p $(@D) ifeq ($(V),0) diff --git a/suite/fuzz/fuzz_decode_platform.c b/suite/fuzz/fuzz_decode_platform.c new file mode 100644 index 00000000..675673bc --- /dev/null +++ b/suite/fuzz/fuzz_decode_platform.c @@ -0,0 +1,32 @@ +// this tool decodes first input byte feed to OSS fuzz, that encodes arch+mode +// by Nguyen Anh Quynh, 2019 + +#include +#include + +#include + +#include "platform.h" + +static struct platform platforms[] = { +#include "platforms.inc" +}; + +int main(int argc, char **argv) +{ + unsigned int platforms_len = sizeof(platforms)/sizeof(platforms[0]), data, i; + + if (argc != 2) { + printf("Decoding OSS fuzz platform\n", argv[0]); + printf("Syntax: %s \n", argv[0]); + return -1; + } + + data = (unsigned int)strtol(argv[1], NULL, 16); + i = (unsigned int)data % platforms_len; + + printf("cstool arch+mode = %s\n", platforms[i].cstoolname); + + return 0; +} +