本文整理汇总了Python中triton.TritonContext.setConcreteVariableValue方法的典型用法代码示例。如果您正苦于以下问题:Python TritonContext.setConcreteVariableValue方法的具体用法?Python TritonContext.setConcreteVariableValue怎么用?Python TritonContext.setConcreteVariableValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类triton.TritonContext
的用法示例。
在下文中一共展示了TritonContext.setConcreteVariableValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestAstConversion
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import setConcreteVariableValue [as 别名]
class TestAstConversion(unittest.TestCase):
"""Testing the AST conversion Triton <-> z3."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
self.astCtxt = self.Triton.getAstContext()
self.sv1 = self.Triton.newSymbolicVariable(8)
self.sv2 = self.Triton.newSymbolicVariable(8)
self.v1 = self.astCtxt.variable(self.sv1)
self.v2 = self.astCtxt.variable(self.sv2)
def test_binop(self):
"""
Check python binary operation.
Fuzz int8/uint8 binop values and check triton/z3 and python results.
"""
# No simplification available
# This only going to test Triton <-> z3 AST conversions.
binop = [
# Overloaded operators
operator.and_,
operator.add,
operator.sub,
operator.xor,
operator.or_,
operator.mul,
operator.lshift,
operator.rshift,
operator.eq,
operator.ne,
operator.le,
operator.ge,
operator.lt,
operator.gt,
operator.div,
operator.mod,
]
for _ in xrange(100):
cv1 = random.randint(0, 255)
cv2 = random.randint(0, 255)
self.Triton.setConcreteVariableValue(self.sv1, cv1)
self.Triton.setConcreteVariableValue(self.sv2, cv2)
for op in binop:
n = op(self.v1, self.v2)
if op == operator.div and cv2 == 0:
ref = 255
elif op == operator.mod and cv2 == 0:
ref = cv1
else:
ref = op(cv1, cv2) % (2 ** 8)
self.assertEqual(ref, n.evaluate(),
"ref = {} and triton value = {} with operator {}"
" operands were {} and {}".format(ref,
n.evaluate(),
op,
cv1,
cv2))
self.assertEqual(ref, self.Triton.evaluateAstViaZ3(n))
self.assertEqual(ref, self.Triton.simplify(n, True).evaluate())
def test_unop(self):
"""
Check python unary operation.
Fuzz int8/uint8 binop values and check triton/z3 and python results.
"""
# No simplification available
# This only going to test Triton <-> z3 AST conversions.
unop = [
operator.invert,
operator.neg,
]
for cv1 in xrange(0, 256):
self.Triton.setConcreteVariableValue(self.sv1, cv1)
for op in unop:
n = op(self.v1)
ref = op(cv1) % (2 ** 8)
self.assertEqual(ref, n.evaluate(),
"ref = {} and triton value = {} with operator "
"{} operands was {}".format(ref,
n.evaluate(),
op,
cv1))
self.assertEqual(ref, self.Triton.evaluateAstViaZ3(n))
self.assertEqual(ref, self.Triton.simplify(n, True).evaluate())
def test_smtbinop(self):
"""
Check smt binary operation.
Fuzz int8/uint8 binop values and check triton/z3 and python results.
#.........这里部分代码省略.........