Files in the top-level directory from the latest check-in
- .fossil-settings
- cwe369
- cwe617
- cwe805
- cwe823
- generic
- collect.in
- common.c
- COPYING
- cover.c
- e9cd
- fix.in
- helpers.cc
- helpers.hh
- helpers.in
- jump.c
- Makefile
- measure-stack.cc
- no-crash.in
- README.md
- scout.cc
- sort-inputs.in
- trace-call.cc
Taosc
Taosc is an automated makeshift patcher for binary programs.
Installation
Taosc depends on AFL++, Dyninst, E9Patch, GNU Findutils, FUZZOLIC,
Valgrind and POSIX utilities. Shell scripts in this project are not fully
POSIX-compliant (patches welcomed) and have only been tested with GNU Bash.
To build and install taosc to $prefix (default to /usr/local),
you need install(1p) and a compiler for C++23 and Zig 0.16:
make -j$(nproc) PREFIX=$prefix install
Usage
taosc-fix TIMEOUT WORKDIR PROOFS_OF_CONCEPT EXECUTABLE ARG...
Fix EXECUTABLE, which crashes for PoC(s) in the PROOFS_OF_CONCEPT directory
when it is run with ARG(s), where @@ is the placeholder for input files.
Processes taking more than TIMEOUT seconds to terminate
are treated the same as crashes.
Files in WORKDIR are overwritten without any warning.
A successful invocation of taosc should create the following files.
patch-location: address of the patch locationpatch-destination: address of the instruction the patch jumps toPROG.patched, wherePROGis the basename ofEXECUTABLE: patched program expecting the mentioned environment variables
Depending on the content of the file patch-format,
additional output may be expected as follows.
Single CWE-*:PROG.brpatchedandPROG.brpatched.jsonfor BinRadarERM generic: newline-separated list ofpredicatesERM CWE-805:predicates,PROG.brpatchedandPROG.brpatched.json
Copying
Taosc is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.