def auto_complete_code(source, zline, zcol, call_sig_only): rv = rpc.AutoCompleteCodeResult() try: try: import jedi except ImportError: py_olly.olly_log('Auto-completions is unavailable, please install `jedi` python module') return rv j = jedi.Script(source=source, line=zline+1, column=zcol) if not call_sig_only: for c in j.completions(): rv.completions.append(c.name.encode('utf-8')) css = j.call_signatures() for cs in css: new_cs = rv.call_sigs.add() if cs.type: new_cs.cs_type = cs.type new_cs.name = cs.name.encode('utf-8') new_cs.index = cs.index if cs.index is not None else -1 if cs.raw_doc: new_cs.raw_doc = cs.raw_doc.encode('utf-8') for param in cs.params: new_param = new_cs.params.add() new_param.name = param.name.encode('utf-8') if param.description: new_param.description = param.description.encode('utf-8') except: py_olly.olly_log('Exception occurred while trying to auto-complete the code') py_olly.olly_log(traceback.format_exc()) return rv
import sys import traceback import ctypes as C from ctypes import wintypes from labeless import pehelper_decl as D from labeless import py_olly from labeless.logs import make_logger from labeless.pehelper import PEHelper logger = make_logger() import ollyapi as api try: import labeless.rpc_pb2 as rpc except ImportError as e: py_olly.olly_log('protobuf is not installed in python') raise e # information about loaded modules modules_meta = dict() modules_exports = dict() # will hold pairs <ea, 'module_name.api_name'> def is_valid_addr(ea): return 0 <= ea <= sys.maxsize def make_names(names, base, remote_base): if not names: return
import ctypes as C from ctypes import wintypes from labeless import pehelper_decl as D from labeless import py_olly from labeless.logs import make_logger from labeless.pehelper import PEHelper logger = make_logger() import ollyapi as api try: import labeless.rpc_pb2 as rpc except ImportError as e: py_olly.olly_log("protobuf is not installed in python") raise e # information about loaded modules modules_meta = dict() modules_exports = dict() # will hold pairs <ea, 'module_name.api_name'> def is_valid_addr(ea): return 0 <= ea <= sys.maxsize def truncate_text_to_max(s): if len(s) >= api.TEXTLEN: return s[: api.TEXTLEN - 1]