-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathsymless.py
More file actions
74 lines (51 loc) · 1.57 KB
/
symless.py
File metadata and controls
74 lines (51 loc) · 1.57 KB
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
#!/usr/bin/python3
import argparse
import os
import sys
import symless.config as config
""" IDA main """
def ida_main():
# parse arguments
parser = argparse.ArgumentParser()
parser.add_argument("--config", type=str, help="config file")
parser.add_argument("--prefix", type=str, default="", help="log prefix")
args = parser.parse_args(idc.ARGV[1:])
start_analysis(args.config)
""" Command line main """
def cmd_usage():
print(f"Usage: python {sys.argv[0]} [-c config.csv] <file(s)>")
def cmd_main():
files = []
root_dir = os.path.realpath(os.path.join(config.g_settings.root, ".."))
config_path = os.path.join(root_dir, "symless", "config", "imports.csv")
# parse arguments
i, length = 1, len(sys.argv)
while i < length:
if sys.argv[i] == "-c":
i += 1
if i == length:
cmd_usage()
return
config_path = sys.argv[i]
else:
files.append(sys.argv[i])
i += 1
if len(files) == 0:
cmd_usage()
return
args = ["--config", config_path]
runner = os.path.join(root_dir, "symless.py")
for file in files:
run_script(runner, os.path.abspath(file), args)
""" Symless main """
if __name__ == "__main__":
try:
# flake8: noqa: F401
import idc
except ModuleNotFoundError:
from run_script import run_script
cmd_main() # script run from command line
else:
from symless.main import start_analysis
ida_main() # script run from IDA
idc.qexit(0)