当前位置: 首页>>代码示例>>Python>>正文


Python capstone.CS_GRP_JUMP属性代码示例

本文整理汇总了Python中capstone.CS_GRP_JUMP属性的典型用法代码示例。如果您正苦于以下问题:Python capstone.CS_GRP_JUMP属性的具体用法?Python capstone.CS_GRP_JUMP怎么用?Python capstone.CS_GRP_JUMP使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在capstone的用法示例。


在下文中一共展示了capstone.CS_GRP_JUMP属性的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: is_jump

# 需要导入模块: import capstone [as 别名]
# 或者: from capstone import CS_GRP_JUMP [as 别名]
def is_jump(i):
    return i.group(CS_GRP_JUMP) 
开发者ID:plasma-disassembler,项目名称:plasma,代码行数:4,代码来源:utils.py

示例2: is_cond_jump

# 需要导入模块: import capstone [as 别名]
# 或者: from capstone import CS_GRP_JUMP [as 别名]
def is_cond_jump(i):
    return i.group(CS_GRP_JUMP) and i.id != X86_INS_JMP 
开发者ID:plasma-disassembler,项目名称:plasma,代码行数:4,代码来源:utils.py

示例3: instruction_from_cs_insn

# 需要导入模块: import capstone [as 别名]
# 或者: from capstone import CS_GRP_JUMP [as 别名]
def instruction_from_cs_insn(csInsn, executable):
    groups = []

    if executable.architecture in (ARCHITECTURE.ARM, ARCHITECTURE.ARM_64):
        if csInsn.mnemonic.startswith('bl'):
            groups.append(Instruction.GRP_CALL)
        elif csInsn.mnemonic.startswith('b'):
            groups.append(Instruction.GRP_JUMP)
    else:
        if capstone.CS_GRP_JUMP in csInsn.groups:
            groups.append(Instruction.GRP_JUMP)
        if capstone.CS_GRP_CALL in csInsn.groups:
            groups.append(Instruction.GRP_CALL)

    instruction = Instruction(csInsn.address, csInsn.size, csInsn.bytes, csInsn.mnemonic, [], groups, csInsn, executable)

    # We manually pull out the instruction details here so that capstone doesn't deepcopy everything which burns time
    # and memory
    detail = ctypes.cast(csInsn._raw.detail, ctypes.POINTER(capstone._cs_detail)).contents

    if executable.architecture == ARCHITECTURE.X86 or executable.architecture == ARCHITECTURE.X86_64:
        detail = detail.arch.x86
    elif executable.architecture == ARCHITECTURE.ARM:
        detail = detail.arch.arm
    elif executable.architecture == ARCHITECTURE.ARM_64:
        detail = detail.arch.arm64

    operands = [operand_from_cs_op(detail.operands[i], instruction) for i in range(detail.op_count)]

    instruction.operands = operands

    return instruction 
开发者ID:osirislab,项目名称:dispatch,代码行数:34,代码来源:constructs.py

示例4: is_target_gotplt

# 需要导入模块: import capstone [as 别名]
# 或者: from capstone import CS_GRP_JUMP [as 别名]
def is_target_gotplt(self, target):
        assert self.gotplt_base and self.gotplt_sz

        if not (self.gotplt_base <= target <
                self.gotplt_base + self.gotplt_sz):
            return False

        for ent in self.gotplt_entries:
            if ent.address == target:
                if (CS_GRP_JUMP in ent.groups
                        and ent.operands[0].type == CS_OP_MEM):
                    return ent.operands[0].mem.disp + ent.address + ent.size

        return False 
开发者ID:HexHive,项目名称:retrowrite,代码行数:16,代码来源:container.py


注:本文中的capstone.CS_GRP_JUMP属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。