Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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]