python类GetLongPrm()的实例源码

Helper.py 文件源码 项目:HexRaysPyTools 作者: igogo-x86 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def init_demangled_names(*args):
    """
    Creates dictionary of demangled names => address, that will be used further at double click on methods got from
    symbols.
    """
    demangled_names.clear()
    for address, name in idautils.Names():
        short_name = idc.Demangle(name, idc.GetLongPrm(idc.INF_SHORT_DN))
        if short_name:
            demangled_names[short_name.split('(')[0]] = address - idaapi.get_imagebase()

            # Names can have templates and should be transformed before creating local type
            name = re.sub(r'[<>]', '_t_', name)

            # Thunk functions with name like "[thunk]:CWarmupHostProvider::Release`adjustor{8}'"
            result = re.search(r"(\[thunk\]:)?([^`]*)(.*\{(\d+)}.*)?", short_name)
            name, adjustor = result.group(2), result.group(4)
            if adjustor:
                demangled_names[name + "_adj_" + adjustor] = address - idaapi.get_imagebase()

    print "[DEBUG] Demangled names have been initialized"
utils.py 文件源码 项目:devirtualize 作者: ALSchwalm 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def demangle(name, strip_arg_types=False):
    def strip_args(name):
        if strip_arg_types is True:
            return name.split("(", 1)[0]
        else:
            return name

    demangled = idc.Demangle(name, idc.GetLongPrm(idc.INF_LONG_DN))
    if demangled is not None:
        return strip_args(demangled)

    # The names in RTTI are not mangled normally, so try prepending
    # the '_Z'
    demangled = idc.Demangle("_Z" + name, idc.GetLongPrm(idc.INF_LONG_DN))
    if demangled is not None:
        return strip_args(demangled)

    return strip_args(name)
functions_plus.py 文件源码 项目:functions-plus 作者: ax330d 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def demangle(self, name):
        '''Demangle name.'''

        mask = idc.GetLongPrm(idc.INF_SHORT_DN)
        demangled = idc.Demangle(name, mask)
        if demangled is None:
            return name
        return demangled
functions_plus.py 文件源码 项目:functions-plus 作者: ax330d 项目源码 文件源码 阅读 29 收藏 0 点赞 0 评论 0
def __init__(self):
        super(FunctionsPlus, self).__init__()

        if idc.GetLongPrm(idc.INF_PROCNAME).lower() != 'metapc':
            print "Functions+ warning: not tested in this configuration"
        self.cols = Cols()
FunctionMatrix.py 文件源码 项目:IDAPython-Scripts 作者: razygon 项目源码 文件源码 阅读 25 收藏 0 点赞 0 评论 0
def _feature_ClsorInstMethod(self,f_ea):
        '''
        prior feature: Null
        '''
        func_name = idaapi.get_func_name(f_ea)
        disable_mask = idc.GetLongPrm(idc.INF_LONG_DN)
        prototype = idaapi.demangle_name(func_name, disable_mask)
        if not prototype:
            return 0
        elif '__thiscall' in prototype:
            return 1
        else:
            return 0
undname.py 文件源码 项目:ida_pdb_loader 作者: ax330d 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def _demangle(name, short=True):
    dtype = idc.INF_LONG_DN
    if short:
        dtype = idc.INF_SHORT_DN
    tmp = idc.Demangle(name, idc.GetLongPrm(dtype))
    if tmp:
        name = tmp
    name = name.replace('__', '::')
    return name
utils.py 文件源码 项目:devirtualize 作者: ALSchwalm 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def is_vtable_name(name):
    demangled = idc.Demangle(name, idc.GetLongPrm(idc.INF_LONG_DN))
    if demangled is not None and demangled.startswith("`vtable for"):
        return True
    return False


问题


面经


文章

微信
公众号

扫码关注公众号