about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--miasm/analysis/dse.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/miasm/analysis/dse.py b/miasm/analysis/dse.py
index f3af9d18..4d2655df 100644
--- a/miasm/analysis/dse.py
+++ b/miasm/analysis/dse.py
@@ -250,7 +250,7 @@ class DSEEngine(object):
     def add_lib_handler(self, libimp, namespace):
         """Add search for handler based on a @libimp libimp instance
 
-        Known functions will be looked by {name}_symb in the @namespace
+        Known functions will be looked by {name}_symb or {name}_{ord}_symb in the @namespace
         """
         namespace = dict(
             (force_bytes(name), func) for name, func in viewitems(namespace)
@@ -259,12 +259,17 @@ class DSEEngine(object):
         # lambda cannot contain statement
         def default_func(dse):
             fname = libimp.fad2cname[dse.jitter.pc]
-            fname = b"%s_symb" % force_bytes(str(fname))
+            if isinstance(fname, tuple):
+                fname = b"%s_%d_symb" % (force_bytes(fname[0]), fname[1])
+            else:
+                fname = b"%s_symb" % force_bytes(fname)
             raise RuntimeError("Symbolic stub '%s' not found" % fname)
 
         for addr, fname in viewitems(libimp.fad2cname):
-            fname = force_bytes(str(fname))
-            fname = b"%s_symb" % fname
+            if isinstance(fname, tuple):
+                fname = b"%s_%d_symb" % (force_bytes(fname[0]), fname[1])
+            else:
+                fname = b"%s_symb" % force_bytes(fname)
             func = namespace.get(fname, None)
             if func is not None:
                 self.add_handler(addr, func)