-
Notifications
You must be signed in to change notification settings - Fork 2
/
PatchWeave.py
65 lines (49 loc) · 1.94 KB
/
PatchWeave.py
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
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import time
from tools import Emitter, Logger
from common import Definitions
from common.Utilities import error_exit, create_directories
from phases import Trace, Weave, Concolic, Slice, Analyse, Verify, Initialize, Exploit
def first_run_check():
create_directories()
def run_patchweave():
# read configuration and check first run
first_run_check()
Emitter.start()
start_time = time.time()
time_info = dict()
# Prepare projects directories by getting paths and cleaning residual files
time_check = time.time()
Initialize.initialize()
time_info[Definitions.KEY_DURATION_INITIALIZATION] = str(time.time() - time_check)
time_check = time.time()
Exploit.exploit()
time_info[Definitions.KEY_DURATION_EXPLOIT] = str(time.time() - time_check)
time_check = time.time()
Analyse.analyse()
time_info[Definitions.KEY_DURATION_DIFF_ANALYSIS] = str(time.time() - time_check)
time_check = time.time()
Trace.trace()
time_info[Definitions.KEY_DURATION_TRACE_ANALYSIS] = str(time.time() - time_check)
time_check = time.time()
Concolic.execute()
time_info[Definitions.KEY_DURATION_SYMBOLIC_TRACE_ANALYSIS] = str(time.time() - time_check)
time_check = time.time()
Slice.slice()
time_info[Definitions.KEY_DURATION_SLICE] = str(time.time() - time_check)
time_check = time.time()
Weave.weave()
time_info[Definitions.KEY_DURATION_TRANSPLANTATION] = str(time.time() - time_check)
time_check = time.time()
Verify.verify()
time_info[Definitions.KEY_DURATION_VERIFICATION] = str(time.time() - time_check)
# Final running time and exit message
time_info[Definitions.KEY_DURATION_TOTAL] = str(time.time() - start_time)
Emitter.end(time_info)
Logger.end(time_info)
if __name__ == "__main__":
try:
run_patchweave()
except KeyboardInterrupt as e:
error_exit("Program Interrupted by User")