summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorKyleMiles <krm504@nyu.edu>2020-10-08 23:29:39 +0000
committerKyleMiles <krm504@nyu.edu>2020-10-19 18:17:38 +0000
commit3083903d0ee4ccd18099cb3315e0220c7f5993fb (patch)
tree0209754640d3365f07bd204f9bb0f5412b7d1cb9 /python
parentcbebe461efab02c736c79bf48641f33c793a27f4 (diff)
Add Simplifier Implementation
Diffstat (limited to 'python')
-rw-r--r--python/demangle.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/python/demangle.py b/python/demangle.py
index 6ed4010e..67b211df 100644
--- a/python/demangle.py
+++ b/python/demangle.py
@@ -22,6 +22,7 @@ import ctypes
# Binary Ninja components
from binaryninja import _binaryninjacore as core
+from binaryninja.binaryview import BinaryView
from binaryninja import types
# 2-3 compatibility
@@ -47,7 +48,7 @@ def get_qualified_name(names):
return "::".join(names)
-def demangle_ms(arch, mangled_name):
+def demangle_ms(arch, mangled_name, view = None):
"""
``demangle_ms`` demangles a mangled Microsoft Visual Studio C++ name to a Type object.
@@ -65,7 +66,9 @@ def demangle_ms(arch, mangled_name):
outName = ctypes.POINTER(ctypes.c_char_p)()
outSize = ctypes.c_ulonglong()
names = []
- if core.BNDemangleMS(arch.handle, mangled_name, ctypes.byref(handle), ctypes.byref(outName), ctypes.byref(outSize)):
+ if isinstance(view, BinaryView):
+ view = view.handle
+ if core.BNDemangleMS(arch.handle, mangled_name, ctypes.byref(handle), ctypes.byref(outName), ctypes.byref(outSize), view):
for i in range(outSize.value):
names.append(pyNativeStr(outName[i]))
core.BNFreeDemangledName(ctypes.byref(outName), outSize.value)
@@ -73,12 +76,14 @@ def demangle_ms(arch, mangled_name):
return (None, mangled_name)
-def demangle_gnu3(arch, mangled_name):
+def demangle_gnu3(arch, mangled_name, view = None):
handle = ctypes.POINTER(core.BNType)()
outName = ctypes.POINTER(ctypes.c_char_p)()
outSize = ctypes.c_ulonglong()
names = []
- if core.BNDemangleGNU3(arch.handle, mangled_name, ctypes.byref(handle), ctypes.byref(outName), ctypes.byref(outSize)):
+ if isinstance(view, BinaryView):
+ view = view.handle
+ if core.BNDemangleGNU3(arch.handle, mangled_name, ctypes.byref(handle), ctypes.byref(outName), ctypes.byref(outSize), view):
for i in range(outSize.value):
names.append(pyNativeStr(outName[i]))
core.BNFreeDemangledName(ctypes.byref(outName), outSize.value)