本文整理汇总了Python中triton.TritonContext.getRegister方法的典型用法代码示例。如果您正苦于以下问题:Python TritonContext.getRegister方法的具体用法?Python TritonContext.getRegister怎么用?Python TritonContext.getRegister使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类triton.TritonContext
的用法示例。
在下文中一共展示了TritonContext.getRegister方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestFlags
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import getRegister [as 别名]
class TestFlags(unittest.TestCase):
"""Testing the concrete flag values."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
def test_set_flags(self):
"""Check flags can be set in any order with a correct output result."""
registers = [REG.X86_64.ZF, REG.X86_64.AF, REG.X86_64.IF, REG.X86_64.CF,
REG.X86_64.DF, REG.X86_64.PF, REG.X86_64.SF, REG.X86_64.OF,
REG.X86_64.TF]
values = [0] * len(registers)
rand_registers = list(registers)
random.shuffle(rand_registers)
# Randomnly set flags registers and check result is the one expected
for reg in rand_registers:
self.Triton.setConcreteRegisterValue(self.Triton.getRegister(reg), 1)
values[registers.index(reg)] = 1
self.assertListEqual([self.Triton.getConcreteRegisterValue(self.Triton.getRegister(r)) for r in registers], values)
def test_unset_flags(self):
"""Check flags can be unset in any order with a correct result."""
registers = [REG.X86_64.ZF, REG.X86_64.AF, REG.X86_64.IF, REG.X86_64.CF,
REG.X86_64.DF, REG.X86_64.PF, REG.X86_64.SF, REG.X86_64.OF,
REG.X86_64.TF]
values = [1] * len(registers)
for reg in registers:
self.Triton.setConcreteRegisterValue(self.Triton.getRegister(reg), 1)
rand_registers = list(registers)
random.shuffle(rand_registers)
# Randomnly unset flags registers and check result is the one expected
for reg in rand_registers:
self.Triton.setConcreteRegisterValue(self.Triton.getRegister(reg), 0)
values[registers.index(reg)] = 0
self.assertListEqual([self.Triton.getConcreteRegisterValue(self.Triton.getRegister(r)) for r in registers], values)
示例2: TestRegisterValues
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import getRegister [as 别名]
class TestRegisterValues(unittest.TestCase):
"""Check register values with hierarchies."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
def test_set_concrete_value(self):
"""Check register value modification."""
for reg in (REG.X86_64.AH, REG.X86_64.AL):
# OK
reg = self.Triton.getRegister(reg)
self.Triton.setConcreteRegisterValue(reg, 0xff)
# Not OK
# TODO : Be more specific on the raise exception type
with self.assertRaises(Exception):
self.Triton.setConcreteRegisterValue(reg, 0xff+1)
reg = self.Triton.registers.zf
self.Triton.setConcreteRegisterValue(reg, 1)
with self.assertRaises(Exception):
self.Triton.setConcreteRegisterValue(reg, 2)
def test_overlap(self):
"""Check register overlapping."""
self.assertTrue(self.Triton.registers.ax.isOverlapWith(self.Triton.registers.eax), "overlap with upper")
self.assertTrue(self.Triton.registers.ax.isOverlapWith(self.Triton.registers.rax), "overlap with parent")
self.assertTrue(self.Triton.registers.rax.isOverlapWith(self.Triton.registers.ax), "overlap with lower")
self.assertFalse(self.Triton.registers.ah.isOverlapWith(self.Triton.registers.al))
self.assertTrue(self.Triton.registers.ah.isOverlapWith(self.Triton.registers.eax))
self.assertTrue(self.Triton.registers.eax.isOverlapWith(self.Triton.registers.ah))
self.assertTrue(self.Triton.registers.ax.isOverlapWith(self.Triton.registers.al))
self.assertTrue(self.Triton.registers.al.isOverlapWith(self.Triton.registers.ax))
self.assertFalse(self.Triton.registers.eax.isOverlapWith(self.Triton.registers.edx))
示例3: hex
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import getRegister [as 别名]
print 'Display emulated information'
print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
write = inst.getOperands()[0].getAddress()
print 'Instruction :', inst.getDisassembly()
print 'Write at :', hex(write)
print 'Content :', hex(Triton.getConcreteMemoryValue(MemoryAccess(write+4, CPUSIZE.DWORD)))
print 'RAX value :', hex(Triton.getConcreteRegisterValue(Triton.registers.rax))
print 'RSI value :', hex(Triton.getConcreteRegisterValue(Triton.registers.rsi))
print 'RDI value :', hex(Triton.getConcreteRegisterValue(Triton.registers.rdi))
print
print 'Symbolic registers information'
print '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
for k, v in Triton.getSymbolicRegisters().items():
print Triton.getRegister(k), v
print
print 'Symbolic memory information'
print '~~~~~~~~~~~~~~~~~~~~~~~~~~~'
for k, v in Triton.getSymbolicMemory().items():
print hex(k), v
print
print 'Craft symbolic stuffs'
print '~~~~~~~~~~~~~~~~~~~~~'
ah = Triton.getRegisterAst(Triton.registers.ah)
mem = Triton.getMemoryAst(MemoryAccess(0x11248, 4))
print 'Memory at 0x11248 :', mem
print 'Compute memory :', hex(mem.evaluate())
print 'Register AH :', ah