コード例 #1
0
    ("dl", REG_EDX, 0, 8),
    ("bl", REG_EBX, 0, 8),
    ("ah", REG_EAX, 8, 8),
    ("ch", REG_ECX, 8, 8),
    ("dh", REG_EDX, 8, 8),
    ("bh", REG_EBX, 8, 8),
]

statmetas = [
    ('CF', REG_EFLAGS, 0, 1, 'Carrie Flag'),
    ('PF', REG_EFLAGS, 2, 1, 'Parity Flag'),
    ('AF', REG_EFLAGS, 4, 1, 'Adjust Flag'),
    ('ZF', REG_EFLAGS, 6, 1, 'Zero Flag'),
    ('SF', REG_EFLAGS, 7, 1, 'Sign Flag'),
    ('TF', REG_EFLAGS, 8, 1, 'Trap Flag'),
    ('IF', REG_EFLAGS, 9, 1, 'Interrupt Enable Flag'),
    ('DF', REG_EFLAGS, 10, 1, 'Direction Flag'),
    ('OF', REG_EFLAGS, 11, 1, 'Overflow Flag'),
]

e_reg.addLocalStatusMetas(l, i386meta, statmetas, 'EFLAGS')
e_reg.addLocalMetas(l, i386meta)


class i386RegisterContext(e_reg.RegisterContext):
    def __init__(self):
        e_reg.RegisterContext.__init__(self)
        self.loadRegDef(i386regs)
        self.loadRegMetas(i386meta, statmetas=statmetas)
        self.setRegisterIndexes(REG_EIP, REG_ESP, srindex=REG_EFLAGS)
コード例 #2
0
        ("IT3",REG_FLAGS, PSR_IT+3, 1, "IfThen 3 bit"),
        ("IT4",REG_FLAGS, PSR_IT+4, 1, "IfThen 4 bit"),
        ("IT5",REG_FLAGS, PSR_IT+5, 1, "IfThen 5 bit"),
        ("IT6",REG_FLAGS, PSR_IT+6, 1, "IfThen 6 bit"),
        ("IT7",REG_FLAGS, PSR_IT+7, 1, "IfThen 7 bit"),
        ("E", REG_FLAGS, PSR_E, 1, "Data Endian bit"),
        ("A", REG_FLAGS, PSR_A, 1, "Imprecise Abort Disable bit"),
        ("I", REG_FLAGS, PSR_I, 1, "IRQ disable bit"),
        ("F", REG_FLAGS, PSR_F, 1, "FIQ disable bit"),
        ("T", REG_FLAGS, PSR_T, 1, "Thumb Mode bit"),
        ("M", REG_FLAGS, PSR_M, 5, "Processor Mode"),
        ]

arm_metas = [
        ("R13", REG_SP, 0, 32),
        ("R14", REG_LR, 0, 32),
        ("R15", REG_PC, 0, 32),
        ]

e_reg.addLocalStatusMetas(l, arm_metas, arm_status_metas, "CPSC")
e_reg.addLocalMetas(l, arm_metas)


class ArmRegisterContext(e_reg.RegisterContext):
    def __init__(self):
        e_reg.RegisterContext.__init__(self)
        self.loadRegDef(reg_data)
        self.loadRegMetas(arm_metas, statmetas=arm_status_metas)
        self.setRegisterIndexes(REG_PC, REG_SP)

コード例 #3
0
    
    idx = regidx & 0x7
    idx |= (width << 16)
    idx |= (offset << 24)

    return idx

converters = ( 
        None,
        metaFrom8,
        metaFrom16,
        None,
        None,
        )

def convertMeta(regidx, tsize):
    converter = converters[tsize]
    if converter == None:
        return regidx
    return converter(regidx)

e_reg.addLocalStatusMetas(l, H8Meta, H8StatMeta, 'CCR')

class H8RegisterContext(e_reg.RegisterContext):
    def __init__(self):
        e_reg.RegisterContext.__init__(self)
        self.loadRegDef(h8_regs)
        self.loadRegMetas(H8Meta, statmetas=H8StatMeta)
        self.setRegisterIndexes(REG_PC, REG_SP, REG_CCR)

コード例 #4
0
ファイル: regs.py プロジェクト: BwRy/vivisect
    ("xmm10", REG_YMM10, 0, 128),
    ("xmm11", REG_YMM11, 0, 128),
    ("xmm12", REG_YMM12, 0, 128),
    ("xmm13", REG_YMM13, 0, 128),
    ("xmm14", REG_YMM14, 0, 128),
    ("xmm15", REG_YMM15, 0, 128),

]

statmetas = []
# have to rebuild this because the register index is different inside this
# scope.  rebuild with the REG_EFLAGS index inside this module.
for name, idx, offset, width, desc in e_i386.statmetas:
    statmetas.append( (name, REG_EFLAGS, offset, width, desc) )

e_reg.addLocalStatusMetas(l, amd64meta, statmetas, 'EFLAGS')
e_reg.addLocalMetas(l, amd64meta)

RMETA_LOW32 = 0x00200000

class Amd64RegisterContext(e_reg.RegisterContext):
    def __init__(self):
        self.loadRegDef(amd64regs)
        self.loadRegMetas(amd64meta, statmetas=statmetas)
        self.setRegisterIndexes(REG_RIP, REG_RSP, srindex=REG_EFLAGS)

    def setRegister(self, index, value):
        # NOTE: A special override is needed here because setting "eax" automagicall
        # zero extends into RAX...
        if (index & 0xffff0000) == RMETA_LOW32:
            index = index & 0xffff
コード例 #5
0
ファイル: regs.py プロジェクト: d4nnyk/vivisect
GeneralRegGroup = ('general', priregisters, )


metaregs = [ (registers[x], x, 0, 16) for x in range(len(registers)) ]

statmetas = [
        ('C',       REG_SR, 0, 1, 'Carry Flag'),
        ('Z',       REG_SR, 1, 1, 'Zero Flag'),
        ('N',       REG_SR, 2, 1, 'Negative (Sign) Flag'),
        ('GIE',     REG_SR, 3, 1, 'General Interrupt Enable Flag'),
        ('CPUOFF',  REG_SR, 4, 1, 'CPU Off Flag'),
        ('OSCOFF',  REG_SR, 5, 1, 'Oscillator Off Flag'),
        ('SCG0',    REG_SR, 6, 1, 'System Clock Generator 0 Off Flag'),
        ('SCG1',    REG_SR, 7, 1, 'System Clock Generotor 1 Off Flag'),
        ('V',       REG_SR, 8, 1, 'Overflow Flag'),
        ]

l = locals()
e_reg.addLocalEnums(l, reginfo)

e_reg.addLocalStatusMetas(l, priregisters, statmetas, 'SR')
#e_reg.addLocalMetas(l, i386meta)

class Msp430RegisterContext(e_reg.RegisterContext):
    def __init__(self):
        e_reg.RegisterContext.__init__(self)
        self.loadRegDef(reginfo)
        self.loadRegMetas(metaregs, statmetas=statmetas)
        self.setRegisterIndexes(REG_PC, REG_SP, srindex=REG_SR)
コード例 #6
0
ファイル: regs.py プロジェクト: Fitblip/SocketSniff
    ("dl", REG_EDX, 0, 8),
    ("bl", REG_EBX, 0, 8),

    ("ah", REG_EAX, 8, 8),
    ("ch", REG_ECX, 8, 8),
    ("dh", REG_EDX, 8, 8),
    ("bh", REG_EBX, 8, 8),
]

statmetas = [
        ('CF', REG_EFLAGS, 0, 1, 'Carrie Flag'),
        ('PF', REG_EFLAGS, 2, 1, 'Parity Flag'),
        ('AF', REG_EFLAGS, 4, 1, 'Adjust Flag'),
        ('ZF', REG_EFLAGS, 6, 1, 'Zero Flag'),
        ('SF', REG_EFLAGS, 7, 1, 'Sign Flag'),
        ('TF', REG_EFLAGS, 8, 1, 'Trap Flag'),
        ('IF', REG_EFLAGS, 9, 1, 'Interrupt Enable Flag'),
        ('DF', REG_EFLAGS, 10, 1, 'Direction Flag'),
        ('OF', REG_EFLAGS, 11, 1, 'Overflow Flag'),
        ]

e_reg.addLocalStatusMetas(l, i386meta, statmetas, 'EFLAGS')
e_reg.addLocalMetas(l, i386meta)

class i386RegisterContext(e_reg.RegisterContext):
    def __init__(self):
        e_reg.RegisterContext.__init__(self)
        self.loadRegDef(i386regs)
        self.loadRegMetas(i386meta, statmetas=statmetas)
        self.setRegisterIndexes(REG_EIP, REG_ESP, srindex=REG_EFLAGS)
コード例 #7
0
ファイル: regs.py プロジェクト: wflk/vivisect
    priregisters,
)

metaregs = [(registers[x], x, 0, 16) for x in range(len(registers))]

statmetas = [
    ('C', REG_SR, 0, 1, 'Carry Flag'),
    ('Z', REG_SR, 1, 1, 'Zero Flag'),
    ('N', REG_SR, 2, 1, 'Negative (Sign) Flag'),
    ('GIE', REG_SR, 3, 1, 'General Interrupt Enable Flag'),
    ('CPUOFF', REG_SR, 4, 1, 'CPU Off Flag'),
    ('OSCOFF', REG_SR, 5, 1, 'Oscillator Off Flag'),
    ('SCG0', REG_SR, 6, 1, 'System Clock Generator 0 Off Flag'),
    ('SCG1', REG_SR, 7, 1, 'System Clock Generotor 1 Off Flag'),
    ('V', REG_SR, 8, 1, 'Overflow Flag'),
]

l = locals()
e_reg.addLocalEnums(l, reginfo)

e_reg.addLocalStatusMetas(l, priregisters, statmetas, 'SR')
#e_reg.addLocalMetas(l, i386meta)


class Msp430RegisterContext(e_reg.RegisterContext):
    def __init__(self):
        e_reg.RegisterContext.__init__(self)
        self.loadRegDef(reginfo)
        self.loadRegMetas(metaregs, statmetas=statmetas)
        self.setRegisterIndexes(REG_PC, REG_SP, srindex=REG_SR)
コード例 #8
0
ファイル: regs.py プロジェクト: maoguai/protocol_reverse
e_reg.addLocalEnums(l, registers_info)

registers_meta = [
    ("r0", REG_PC, 0, 16),
    ("r1", REG_SP, 0, 16),
    ("r2", REG_SR, 0, 16),
    ("r3", REG_CG, 0, 16),
]

status_meta = [
    ('C',       REG_SR, 0, 1, 'Carry Flag'),
    ('Z',       REG_SR, 1, 1, 'Zero Flag'),
    ('N',       REG_SR, 2, 1, 'Negative (Sign) Flag'),
    ('GIE',     REG_SR, 3, 1, 'General Interrupt Enable Flag'),
    ('CPUOFF',  REG_SR, 4, 1, 'CPU Off Flag'),
    ('OSCOFF',  REG_SR, 5, 1, 'Oscillator Off Flag'),
    ('SCG0',    REG_SR, 6, 1, 'System Clock Generator 0 Off Flag'),
    ('SCG1',    REG_SR, 7, 1, 'System Clock Generotor 1 Off Flag'),
    ('V',       REG_SR, 8, 1, 'Overflow Flag'),
]

e_reg.addLocalStatusMetas(l, registers_meta, status_meta, 'SR')
e_reg.addLocalMetas(l, registers_meta)

class Msp430RegisterContext(e_reg.RegisterContext):
    def __init__(self):
        e_reg.RegisterContext.__init__(self)
        self.loadRegDef(registers_info)
        self.loadRegMetas([], statmetas=status_meta)
        self.setRegisterIndexes(REG_PC, REG_SP, srindex=REG_SR)
コード例 #9
0
    ("r9l",  REG_R9,  0, 8),
    ("r10l", REG_R10, 0, 8),
    ("r11l", REG_R11, 0, 8),
    ("r12l", REG_R12, 0, 8),
    ("r13l", REG_R13, 0, 8),
    ("r14l", REG_R14, 0, 8),
    ("r15l", REG_R15, 0, 8),
]

statmetas = []
# have to rebuild this because the register index is different inside this
# scope.  rebuild with the REG_EFLAGS index inside this module.
for name, idx, offset, width, desc in e_i386.statmetas:
    statmetas.append( (name, REG_EFLAGS, offset, width, desc) )

e_reg.addLocalStatusMetas(l, amd64meta, statmetas, 'EFLAGS')
e_reg.addLocalMetas(l, amd64meta)

RMETA_LOW32 = 0x00200000

class Amd64RegisterContext(e_reg.RegisterContext):
    def __init__(self):
        self.loadRegDef(amd64regs)
        self.loadRegMetas(amd64meta, statmetas=statmetas)
        self.setRegisterIndexes(REG_RIP, REG_RSP, srindex=REG_EFLAGS)

    def setRegister(self, index, value):
        # NOTE: A special override is needed here because setting "eax" automagicall
        # zero extends into RAX...
        if (index & 0xffff0000) == RMETA_LOW32:
            index = index & 0xffff