ejschwartz commited on
Commit
f99e17c
·
1 Parent(s): 9887ae8

Improve dup location and fix duplicate binary bug.

Browse files
Files changed (2) hide show
  1. Dockerfile +1 -1
  2. main.py +11 -2
Dockerfile CHANGED
@@ -27,7 +27,7 @@ RUN unzip ghidrathon/Ghidrathon-v4.0.0.zip -d /ghidra/Ghidra/Extensions
27
 
28
  WORKDIR /
29
 
30
- RUN git clone -b main https://github.com/edmcman/DIRTY # 09-23-24
31
  #ADD ./DIRTY /DIRTY
32
 
33
  RUN --mount=type=cache,target=/root/.cache pip install --upgrade -r /DIRTY/requirements.txt
 
27
 
28
  WORKDIR /
29
 
30
+ RUN git clone -b main https://github.com/edmcman/DIRTY # 09-25-24
31
  #ADD ./DIRTY /DIRTY
32
 
33
  RUN --mount=type=cache,target=/root/.cache pip install --upgrade -r /DIRTY/requirements.txt
main.py CHANGED
@@ -24,14 +24,23 @@ def get_functions(file):
24
 
25
  with tempfile.TemporaryDirectory() as TEMP_DIR:
26
 
 
27
  o = subprocess.run(
28
- f"/ghidra/support/analyzeHeadless {GHIDRA_PROJECT_DIR} {file_hash} -import {file} -postscript /home/user/app/scripts/dump_functions.py {TEMP_DIR}/funcs.json 2>&1",
29
  shell=True,
30
  capture_output=True,
31
  encoding="utf8"
32
  )
33
  if o.returncode != 0:
34
- raise gr.Error(f"Unable to run Ghidra on {file}: {o.stdout}")
 
 
 
 
 
 
 
 
35
 
36
  if not os.path.exists(f"{TEMP_DIR}/funcs.json"):
37
  raise gr.Error(f"DIRTY Ghidra failed to produce output: {o.stdout}")
 
24
 
25
  with tempfile.TemporaryDirectory() as TEMP_DIR:
26
 
27
+ # First import the file
28
  o = subprocess.run(
29
+ f"/ghidra/support/analyzeHeadless {GHIDRA_PROJECT_DIR} {file_hash} -import {file} 2>&1",
30
  shell=True,
31
  capture_output=True,
32
  encoding="utf8"
33
  )
34
  if o.returncode != 0:
35
+ if not "Found conflicting program file in project:" in o.stdout:
36
+ raise gr.Error(f"Unable to run Ghidra on {file}: {o.stdout}")
37
+
38
+ o = subprocess.run(
39
+ f"/ghidra/support/analyzeHeadless {GHIDRA_PROJECT_DIR} {file_hash} -process -postscript /home/user/app/scripts/dump_functions.py {TEMP_DIR}/funcs.json 2>&1",
40
+ shell=True,
41
+ capture_output=True,
42
+ encoding="utf8"
43
+ )
44
 
45
  if not os.path.exists(f"{TEMP_DIR}/funcs.json"):
46
  raise gr.Error(f"DIRTY Ghidra failed to produce output: {o.stdout}")