about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/focaccia/lldb_target.py6
-rw-r--r--src/focaccia/symbolic.py14
2 files changed, 9 insertions, 11 deletions
diff --git a/src/focaccia/lldb_target.py b/src/focaccia/lldb_target.py
index 283c5bf..940b3d9 100644
--- a/src/focaccia/lldb_target.py
+++ b/src/focaccia/lldb_target.py
@@ -91,7 +91,7 @@ class LLDBConcreteTarget:
         return archname
 
     def determine_name(self) -> str:
-        return self.process.GetProcessInfo().GetName()
+        return self.process.GetTarget().GetExecutable().fullpath
 
     def determine_arguments(self):
         launch_info = self.target.GetLaunchInfo()
@@ -395,7 +395,7 @@ class LLDBLocalTarget(LLDBConcreteTarget):
         super().__init__(debugger, target, process)
 
 class LLDBRemoteTarget(LLDBConcreteTarget):
-    def __init__(self, remote: str):
+    def __init__(self, remote: str, executable: str | None = None):
         """Construct an LLDB remote target. Stop at entry.
 
         :param remote: String of the form <remote_name>:<port> (e.g. localhost:12345).
@@ -403,7 +403,7 @@ class LLDBRemoteTarget(LLDBConcreteTarget):
         """
         debugger = lldb.SBDebugger.Create()
         debugger.SetAsync(False)
-        target = debugger.CreateTarget(None)
+        target = debugger.CreateTarget(executable)
         
         # Set up objects for process execution
         error = lldb.SBError()
diff --git a/src/focaccia/symbolic.py b/src/focaccia/symbolic.py
index cb32915..058efe8 100644
--- a/src/focaccia/symbolic.py
+++ b/src/focaccia/symbolic.py
@@ -1,8 +1,11 @@
 """Tools and utilities for  execution with Miasm."""
 
 from __future__ import annotations
-import logging
+
 import sys
+import logging
+
+from pathlib import Path
 
 from miasm.analysis.machine import Machine
 from miasm.core.cpu import instruction as miasm_instr
@@ -733,18 +736,13 @@ class SymbolicTracer:
             return LLDBLocalTarget(binary, self.env.argv, self.env.envp)
 
         debug(f'Connecting to remote debug target {self.remote}')
-        target = LLDBRemoteTarget(self.remote)
+        target = LLDBRemoteTarget(self.remote, binary)
 
         module_name = target.determine_name()
-        if binary is None:
-            binary, self.env.binary_name = module_name, module_name
+        binary = str(Path(self.env.binary_name).resolve())
         if binary != module_name:
             warn(f'Discovered binary name {module_name} differs from specified name {binary}')
 
-        binary_args = target.determine_arguments()
-        if binary_args != self.env.argv:
-            warn(f'Discovered program arguments {binary_args} differ from those specified {self.env.argv}')
-
         return target
 
     def predict_next_state(self, instruction: Instruction, transform: SymbolicTransform):