ejschwartz commited on
Commit
a2767e5
·
1 Parent(s): d353e8e
Files changed (1) hide show
  1. main.py +21 -11
main.py CHANGED
@@ -15,6 +15,25 @@ Currently unhandled features:
15
  * How to extract compilable decompilation from decompilers?
16
  """
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  def compile(compiler, flags, source):
20
  # Create a temporary file for the C source code
@@ -54,9 +73,11 @@ def compile(compiler, flags, source):
54
  # Disassemble the object file
55
  disassembly = subprocess.run(
56
  ["objdump", "-d", temp_o_file_name],
 
57
  capture_output=True,
58
  text=True
59
  ).stdout
 
60
 
61
  if result.returncode == 0:
62
  return compiled_bytes, compile_output, disassembly
@@ -64,18 +85,7 @@ def compile(compiler, flags, source):
64
  return None, compile_output, disassembly
65
 
66
 
67
- def disassemble_bytes(byte_data, architecture):
68
- with tempfile.NamedTemporaryFile(suffix=".bin", delete=False) as temp_bin_file:
69
- temp_bin_file.write(byte_data)
70
- temp_bin_file_name = temp_bin_file.name
71
-
72
- disassembly = subprocess.run(
73
- ["objdump", "-D", "-b", "binary", "-m", architecture, temp_bin_file_name],
74
- capture_output=True,
75
- text=True
76
- ).stdout
77
 
78
- return disassembly
79
 
80
 
81
  def predict(target_bytes, source, compiler, flags, architecture):
 
15
  * How to extract compilable decompilation from decompilers?
16
  """
17
 
18
+ def trim(str, n):
19
+ return "\n".join(str.splitlines()[:n])
20
+
21
+ def trim_objdump(str):
22
+ return trim(str, 5)
23
+
24
+ def disassemble_bytes(byte_data, architecture):
25
+ with tempfile.NamedTemporaryFile(suffix=".bin", delete=False) as temp_bin_file:
26
+ temp_bin_file.write(byte_data)
27
+ temp_bin_file_name = temp_bin_file.name
28
+
29
+ disassembly = subprocess.run(
30
+ ["objdump", "-D", "-b", "binary", "-m", architecture, temp_bin_file_name],
31
+ capture_output=True,
32
+ text=True
33
+ ).stdout
34
+ disassembly = trim_objdump(disassembly)
35
+
36
+ return disassembly
37
 
38
  def compile(compiler, flags, source):
39
  # Create a temporary file for the C source code
 
73
  # Disassemble the object file
74
  disassembly = subprocess.run(
75
  ["objdump", "-d", temp_o_file_name],
76
+ shell
77
  capture_output=True,
78
  text=True
79
  ).stdout
80
+ disassembly = trim_objdump(disassembly)
81
 
82
  if result.returncode == 0:
83
  return compiled_bytes, compile_output, disassembly
 
85
  return None, compile_output, disassembly
86
 
87
 
 
 
 
 
 
 
 
 
 
 
88
 
 
89
 
90
 
91
  def predict(target_bytes, source, compiler, flags, architecture):