1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
commit 24044a2d0341cfdd3c7cc7320cbbd49591ef28ce
Author: Nguyễn Gia Phong <cnx@loang.net>
Date: 2025-04-29 16:44:20 +0900
Unbundle required utilities
diff --git a/fuzzolic/executor.py b/fuzzolic/executor.py
index f2639eb8da6a..06d0253a3b07 100644
--- a/fuzzolic/executor.py
+++ b/fuzzolic/executor.py
@@ -21,14 +21,9 @@ from . import minimizer_qsym
from . import minimizer
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
-SOLVER_SMT_BIN = SCRIPT_DIR + '/../solver/solver-smt'
-SOLVER_FUZZY_BIN = SCRIPT_DIR + '/../solver/solver-fuzzy'
-TRACER_BIN = SCRIPT_DIR + '/../tracer/x86_64-linux-user/qemu-x86_64'
-
-if 'AFL_PATH' not in os.environ:
- AFL_PATH = SCRIPT_DIR + '/../../AFLplusplus/'
-else:
- AFL_PATH = os.environ['AFL_PATH']
+SOLVER_SMT_BIN = 'solver-smt'
+SOLVER_FUZZY_BIN = 'solver-fuzzy'
+TRACER_BIN = 'qemu-x86_64'
SOLVER_WAIT_TIME_AT_STARTUP = 0.0010
SOLVER_TIMEOUT = 1000
@@ -84,15 +79,12 @@ class Executor(object):
sys.exit('ERROR: invalid AFL workdir')
self.afl = os.path.abspath(afl)
self.minimizer = minimizer_qsym.TestcaseMinimizer(
- [binary] + binary_args, AFL_PATH, output_dir, True, input_fixed_name)
+ [binary] + binary_args, output_dir, True, input_fixed_name)
# self.minimizer = minimizer.TestcaseMinimizer([binary] + binary_args, self.global_bitmap)
else:
self.afl = None
- if minimizer_qsym.is_afl_showmap_available():
- self.minimizer = minimizer_qsym.TestcaseMinimizer(
- [binary] + binary_args, AFL_PATH, output_dir, True, input_fixed_name)
- else:
- self.minimizer = minimizer.TestcaseMinimizer([binary] + binary_args, self.global_bitmap)
+ self.minimizer = minimizer_qsym.TestcaseMinimizer(
+ [binary] + binary_args, output_dir, True, input_fixed_name)
self.afl_processed_testcases = set()
self.afl_alt_processed_testcases = set()
@@ -126,16 +118,8 @@ class Executor(object):
if use_symbolic_models:
plt_info_file = self.__get_root_dir() + "/plt_info.txt"
- p = subprocess.Popen(
- [
- SCRIPT_DIR + "/find_models_addrs.py",
- "-o", plt_info_file,
- binary
- ],
- # stderr=subprocess.DEVNULL,
- # stdin=subprocess.DEVNULL,
- )
- p.wait()
+ subprocess.run(["fuzzolic-find-models-addrs",
+ "-o", plt_info_file, binary])
self.plt_info = plt_info_file
else:
self.plt_info = None
diff --git a/fuzzolic/minimizer_qsym.py b/fuzzolic/minimizer_qsym.py
index 6d0170577392..1c31df0b9f0a 100644
--- a/fuzzolic/minimizer_qsym.py
+++ b/fuzzolic/minimizer_qsym.py
@@ -81,15 +81,13 @@ def fix_at_file(cmd, testcase):
return cmd, stdin
-def is_afl_showmap_available():
- return os.path.exists(os.path.join(SCRIPT_DIR, "../utils/afl-showmap"))
class TestcaseMinimizer(object):
- def __init__(self, cmd, afl_path, out_dir, qemu_mode, fixed_name, map_size=MAP_SIZE):
+ def __init__(self, cmd, out_dir, qemu_mode, fixed_name, map_size=MAP_SIZE):
self.cmd = cmd
self.qemu_mode = qemu_mode
- self.showmap = os.path.join(afl_path, "afl-showmap")
- self.showmap_fork = os.path.join(SCRIPT_DIR, "../utils/afl-showmap")
+ self.showmap = "afl-showmap"
+ self.showmap_fork = "fuzzolic-showmap"
self.bitmap_file = os.path.join(out_dir, "afl-bitmap")
self.crash_bitmap_file = os.path.join(out_dir, "afl-crash-bitmap")
_, self.temp_file = tempfile.mkstemp(dir=out_dir)
@@ -225,16 +223,8 @@ class TestcaseMinimizer(object):
return interesting
def is_interesting_testcase_fork(self, bitmap, my_bitmap_file=None):
- if my_bitmap_file is None:
- my_bitmap_file = self.bitmap_file
-
- cmd = [
- SCRIPT_DIR + '/../utils/merge_bitmap',
- bitmap,
- my_bitmap_file
- ]
- # print(cmd)
-
+ cmd = ('fuzzolic-merge-bitmap', bitmap,
+ my_bitmap_file or self.bitmap_file)
with open(os.devnull, "wb") as devnull:
proc = sp.Popen(cmd, stdin=None, stdout=devnull, stderr=devnull)
proc.wait()
|