diff options
Diffstat (limited to 'fix.m4')
-rw-r--r-- | fix.m4 | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/fix.m4 b/fix.m4 new file mode 100644 index 0000000..cbf3725 --- /dev/null +++ b/fix.m4 @@ -0,0 +1,46 @@ +#!/bin/sh +# Patcher +# Copyright (C) 2024 Nguy?n Gia Phong +# +# This file is part of taosc. +# +# 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. +# +# Taosc is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with taosc. If not, see <https://www.gnu.org/licenses/>. + +set -e +if test $# -ne 3 +then + echo Usage: taosc-fix binary instruction-address working-directory + exit 1 +fi +binary="$(realpath $1)" +address="$2" +wd="$(realpath $3)" + +pushd DATA_DIR > /dev/null +trap 'popd > /dev/null' EXIT +collect="$wd/$(basename $binary).collect" +e9tool -M addr=$address -P 'log(state)@collect' -o "$collect.orig" "$binary" +afl-dyninst -i "$collect.orig" -o "$collect" +patched="$wd/$(basename $binary).patched" +e9tool -M addr=$address -P 'if dest(state)@patch goto' -o "$patched" "$binary" + +taosc-scout "$binary" "$address" > "$wd/destinations" +#for dest in $(taosc-slice "$binary" "$address") +#do +# for dest in $(taosc-slice "$binary" "$address") +# do +# TAOSC_PREDICATE="<v15p0" TAOSC_DESTINATION=$dest $patched\ +# -d /home/cnx/Sauces/apr/vulnfix/data/binutils/cve_2017_14745/exploit +# done +#done |