mirror of
https://github.com/angr/angr
synced 2026-08-17 12:23:11 -04:00
29 lines
1.4 KiB
Python
29 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
import archinfo
|
|
|
|
from angr import ailment
|
|
from angr.ailment.expression import Const, Extract, VirtualVariable, VirtualVariableCategory
|
|
from angr.analyses.decompiler.condition_processor import ConditionProcessor
|
|
|
|
|
|
def test_extract_placeholders_include_semantic_properties():
|
|
arch = archinfo.ArchAMD64()
|
|
manager = ailment.Manager(arch=arch)
|
|
condition_processor = ConditionProcessor(arch, manager)
|
|
|
|
base = VirtualVariable(0, 1, 64, VirtualVariableCategory.REGISTER, oident=arch.registers["rax"][0])
|
|
offset = Const(1, 0, 64)
|
|
extract_byte = Extract(2, 8, base, offset, arch.memory_endness)
|
|
extract_word = Extract(3, 16, base, offset, arch.memory_endness)
|
|
extract_byte_be = Extract(4, 8, base, offset, archinfo.Endness.BE)
|
|
|
|
byte_ast = condition_processor.claripy_ast_from_ail_condition(extract_byte)
|
|
word_ast = condition_processor.claripy_ast_from_ail_condition(extract_word)
|
|
byte_be_ast = condition_processor.claripy_ast_from_ail_condition(extract_byte_be)
|
|
|
|
assert byte_ast.args[0] != word_ast.args[0]
|
|
assert byte_ast.args[0] != byte_be_ast.args[0]
|
|
assert condition_processor.convert_claripy_bool_ast(byte_ast) is extract_byte
|
|
assert condition_processor.convert_claripy_bool_ast(word_ast) is extract_word
|
|
assert condition_processor.convert_claripy_bool_ast(byte_be_ast) is extract_byte_be
|