angr 9.2.87__py3-none-manylinux2014_x86_64.whl → 9.2.89__py3-none-manylinux2014_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of angr might be problematic. Click here for more details.

Files changed (248) hide show
  1. angr/__init__.py +4 -1
  2. angr/analyses/decompiler/clinic.py +16 -0
  3. angr/analyses/decompiler/decompiler.py +3 -0
  4. angr/analyses/decompiler/optimization_passes/__init__.py +5 -0
  5. angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py +108 -0
  6. angr/analyses/decompiler/optimization_passes/optimization_pass.py +17 -4
  7. angr/analyses/decompiler/optimization_passes/return_duplicator.py +4 -32
  8. angr/analyses/decompiler/structured_codegen/c.py +12 -2
  9. angr/analyses/decompiler/utils.py +13 -0
  10. angr/analyses/typehoon/dfa.py +108 -0
  11. angr/analyses/typehoon/lifter.py +34 -2
  12. angr/analyses/typehoon/simple_solver.py +1043 -503
  13. angr/analyses/typehoon/translator.py +13 -4
  14. angr/analyses/typehoon/typeconsts.py +117 -36
  15. angr/analyses/typehoon/typehoon.py +31 -11
  16. angr/analyses/typehoon/typevars.py +88 -21
  17. angr/analyses/typehoon/variance.py +10 -0
  18. angr/analyses/variable_recovery/engine_ail.py +28 -9
  19. angr/analyses/variable_recovery/engine_base.py +50 -43
  20. angr/analyses/variable_recovery/variable_recovery_base.py +16 -3
  21. angr/analyses/variable_recovery/variable_recovery_fast.py +14 -5
  22. angr/exploration_techniques/tracer.py +2 -0
  23. angr/misc/autoimport.py +26 -0
  24. angr/procedures/definitions/__init__.py +32 -3
  25. angr/utils/constants.py +1 -0
  26. angr/utils/graph.py +20 -1
  27. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/METADATA +7 -6
  28. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/RECORD +32 -244
  29. angr-9.2.89.dist-info/top_level.txt +1 -0
  30. angr/procedures/definitions/ntdll.py +0 -12
  31. angr-9.2.87.dist-info/top_level.txt +0 -2
  32. tests/__init__.py +0 -0
  33. tests/analyses/__init__.py +0 -0
  34. tests/analyses/cfg/__init__.py +0 -0
  35. tests/analyses/cfg/test_cfg_clflush.py +0 -43
  36. tests/analyses/cfg/test_cfg_get_any_node.py +0 -34
  37. tests/analyses/cfg/test_cfg_manager.py +0 -32
  38. tests/analyses/cfg/test_cfg_model.py +0 -55
  39. tests/analyses/cfg/test_cfg_patching.py +0 -378
  40. tests/analyses/cfg/test_cfg_rust_got_resolution.py +0 -36
  41. tests/analyses/cfg/test_cfg_thumb_firmware.py +0 -50
  42. tests/analyses/cfg/test_cfg_vex_postprocessor.py +0 -27
  43. tests/analyses/cfg/test_cfgemulated.py +0 -634
  44. tests/analyses/cfg/test_cfgfast.py +0 -1123
  45. tests/analyses/cfg/test_cfgfast_soot.py +0 -38
  46. tests/analyses/cfg/test_const_resolver.py +0 -38
  47. tests/analyses/cfg/test_iat_resolver.py +0 -37
  48. tests/analyses/cfg/test_jumptables.py +0 -3008
  49. tests/analyses/cfg/test_noop_blocks.py +0 -54
  50. tests/analyses/cfg_slice_to_sink/__init__.py +0 -0
  51. tests/analyses/cfg_slice_to_sink/test_cfg_slice_to_sink.py +0 -93
  52. tests/analyses/cfg_slice_to_sink/test_graph.py +0 -114
  53. tests/analyses/cfg_slice_to_sink/test_transitions.py +0 -28
  54. tests/analyses/decompiler/__init__.py +0 -0
  55. tests/analyses/decompiler/test_baseptr_save_simplifier.py +0 -80
  56. tests/analyses/decompiler/test_decompiler.py +0 -3336
  57. tests/analyses/decompiler/test_peephole_optimizations.py +0 -48
  58. tests/analyses/decompiler/test_propagator_loops.py +0 -101
  59. tests/analyses/decompiler/test_structurer.py +0 -275
  60. tests/analyses/reaching_definitions/__init__.py +0 -0
  61. tests/analyses/reaching_definitions/test_dep_graph.py +0 -432
  62. tests/analyses/reaching_definitions/test_function_handler.py +0 -131
  63. tests/analyses/reaching_definitions/test_heap_allocator.py +0 -46
  64. tests/analyses/reaching_definitions/test_rd_state.py +0 -78
  65. tests/analyses/reaching_definitions/test_reachingdefinitions.py +0 -463
  66. tests/analyses/reaching_definitions/test_subject.py +0 -76
  67. tests/analyses/test_bindiff.py +0 -52
  68. tests/analyses/test_block_simplifier.py +0 -112
  69. tests/analyses/test_boyscout.py +0 -104
  70. tests/analyses/test_calling_convention_analysis.py +0 -352
  71. tests/analyses/test_callsite_maker.py +0 -60
  72. tests/analyses/test_cdg.py +0 -165
  73. tests/analyses/test_cfb.py +0 -37
  74. tests/analyses/test_class_identifier.py +0 -46
  75. tests/analyses/test_clinic.py +0 -30
  76. tests/analyses/test_codetagging.py +0 -32
  77. tests/analyses/test_constantpropagation.py +0 -88
  78. tests/analyses/test_ddg.py +0 -95
  79. tests/analyses/test_ddg_global_var_dependencies.py +0 -83
  80. tests/analyses/test_ddg_memvar_addresses.py +0 -40
  81. tests/analyses/test_disassembly.py +0 -121
  82. tests/analyses/test_find_objects_static.py +0 -35
  83. tests/analyses/test_flirt.py +0 -49
  84. tests/analyses/test_identifier.py +0 -33
  85. tests/analyses/test_init_finder.py +0 -38
  86. tests/analyses/test_proximitygraph.py +0 -31
  87. tests/analyses/test_reassembler.py +0 -295
  88. tests/analyses/test_regionidentifier.py +0 -27
  89. tests/analyses/test_slicing.py +0 -164
  90. tests/analyses/test_stack_pointer_tracker.py +0 -74
  91. tests/analyses/test_static_hooker.py +0 -28
  92. tests/analyses/test_typehoon.py +0 -55
  93. tests/analyses/test_variablerecovery.py +0 -464
  94. tests/analyses/test_vfg.py +0 -221
  95. tests/analyses/test_vtable.py +0 -31
  96. tests/analyses/test_xrefs.py +0 -77
  97. tests/common.py +0 -128
  98. tests/engines/__init__.py +0 -0
  99. tests/engines/light/__init__.py +0 -0
  100. tests/engines/light/test_data.py +0 -17
  101. tests/engines/pcode/__init__.py +0 -0
  102. tests/engines/pcode/test_emulate.py +0 -607
  103. tests/engines/pcode/test_pcode.py +0 -84
  104. tests/engines/test_actions.py +0 -27
  105. tests/engines/test_hook.py +0 -112
  106. tests/engines/test_java.py +0 -697
  107. tests/engines/test_unicorn.py +0 -518
  108. tests/engines/vex/__init__.py +0 -0
  109. tests/engines/vex/test_lifter.py +0 -124
  110. tests/engines/vex/test_vex.py +0 -574
  111. tests/exploration_techniques/__init__.py +0 -0
  112. tests/exploration_techniques/test_cacher.py +0 -45
  113. tests/exploration_techniques/test_director.py +0 -67
  114. tests/exploration_techniques/test_driller_core.py +0 -48
  115. tests/exploration_techniques/test_loop_seer.py +0 -158
  116. tests/exploration_techniques/test_memory_watcher.py +0 -46
  117. tests/exploration_techniques/test_oppologist.py +0 -65
  118. tests/exploration_techniques/test_spiller.py +0 -82
  119. tests/exploration_techniques/test_stochastic.py +0 -40
  120. tests/exploration_techniques/test_tech_builder.py +0 -61
  121. tests/exploration_techniques/test_tracer.py +0 -856
  122. tests/exploration_techniques/test_unique.py +0 -40
  123. tests/exploration_techniques/test_veritesting.py +0 -120
  124. tests/factory/__init__.py +0 -0
  125. tests/factory/block/__init__.py +0 -0
  126. tests/factory/block/test_block_cache.py +0 -33
  127. tests/factory/block/test_keystone.py +0 -106
  128. tests/factory/test_argc.py +0 -101
  129. tests/factory/test_argc_sym.py +0 -110
  130. tests/factory/test_argv.py +0 -158
  131. tests/factory/test_callable.py +0 -266
  132. tests/factory/test_windows_args.py +0 -36
  133. tests/knowledge_plugins/__init__.py +0 -0
  134. tests/knowledge_plugins/cfg/__init__.py +0 -0
  135. tests/knowledge_plugins/cfg/test_cfg_manager.py +0 -36
  136. tests/knowledge_plugins/functions/__init__.py +0 -0
  137. tests/knowledge_plugins/functions/test_function.py +0 -91
  138. tests/knowledge_plugins/functions/test_function2.py +0 -79
  139. tests/knowledge_plugins/functions/test_function_manager.py +0 -139
  140. tests/knowledge_plugins/functions/test_prototypes.py +0 -53
  141. tests/knowledge_plugins/key_definitions/__init__.py +0 -0
  142. tests/knowledge_plugins/key_definitions/test_atoms.py +0 -24
  143. tests/knowledge_plugins/key_definitions/test_environment.py +0 -126
  144. tests/knowledge_plugins/key_definitions/test_heap_address.py +0 -27
  145. tests/knowledge_plugins/key_definitions/test_live_definitions.py +0 -72
  146. tests/knowledge_plugins/test_dwarf_variables.py +0 -240
  147. tests/knowledge_plugins/test_kb_plugins.py +0 -91
  148. tests/knowledge_plugins/test_kb_plugins_dwarf.py +0 -36
  149. tests/knowledge_plugins/test_patches.py +0 -48
  150. tests/misc/__init__.py +0 -0
  151. tests/misc/test_hookset.py +0 -57
  152. tests/perf/__init__.py +0 -0
  153. tests/perf/perf_cfgemulated.py +0 -19
  154. tests/perf/perf_cfgfast.py +0 -18
  155. tests/perf/perf_concrete_execution.py +0 -41
  156. tests/perf/perf_siminspect_nop.py +0 -36
  157. tests/perf/perf_state_copy.py +0 -33
  158. tests/perf/perf_unicorn_0.py +0 -27
  159. tests/perf/perf_unicorn_1.py +0 -23
  160. tests/procedures/__init__.py +0 -0
  161. tests/procedures/glibc/__init__.py +0 -0
  162. tests/procedures/glibc/test_ctype_locale.py +0 -164
  163. tests/procedures/libc/__init__.py +0 -0
  164. tests/procedures/libc/test_fgets.py +0 -53
  165. tests/procedures/libc/test_scanf.py +0 -205
  166. tests/procedures/libc/test_sprintf.py +0 -44
  167. tests/procedures/libc/test_sscanf.py +0 -63
  168. tests/procedures/libc/test_strcasecmp.py +0 -37
  169. tests/procedures/libc/test_string.py +0 -1102
  170. tests/procedures/libc/test_strtol.py +0 -78
  171. tests/procedures/linux_kernel/__init__.py +0 -0
  172. tests/procedures/linux_kernel/test_lseek.py +0 -174
  173. tests/procedures/posix/__init__.py +0 -0
  174. tests/procedures/posix/test_chroot.py +0 -33
  175. tests/procedures/posix/test_getenv.py +0 -78
  176. tests/procedures/posix/test_pwrite_pread.py +0 -57
  177. tests/procedures/posix/test_sim_time.py +0 -46
  178. tests/procedures/posix/test_unlink.py +0 -46
  179. tests/procedures/test_project_resolve_simproc.py +0 -43
  180. tests/procedures/test_sim_procedure.py +0 -117
  181. tests/procedures/test_stub_procedure_args.py +0 -53
  182. tests/serialization/__init__.py +0 -0
  183. tests/serialization/test_db.py +0 -197
  184. tests/serialization/test_pickle.py +0 -95
  185. tests/serialization/test_serialization.py +0 -132
  186. tests/serialization/test_vault.py +0 -169
  187. tests/sim/__init__.py +0 -3
  188. tests/sim/exec_func/__init__.py +0 -0
  189. tests/sim/exec_func/test_mem_funcs.py +0 -55
  190. tests/sim/exec_func/test_str_funcs.py +0 -93
  191. tests/sim/exec_func/test_syscall_result.py +0 -39
  192. tests/sim/exec_insn/__init__.py +0 -0
  193. tests/sim/exec_insn/test_adc.py +0 -44
  194. tests/sim/exec_insn/test_ops.py +0 -83
  195. tests/sim/exec_insn/test_rcr.py +0 -26
  196. tests/sim/exec_insn/test_rol.py +0 -51
  197. tests/sim/exec_insn/test_signed_div.py +0 -34
  198. tests/sim/exec_insn/test_sqrt.py +0 -56
  199. tests/sim/options/__init__.py +0 -0
  200. tests/sim/options/test_0div.py +0 -54
  201. tests/sim/options/test_symbolic_fd.py +0 -59
  202. tests/sim/options/test_unsupported.py +0 -34
  203. tests/sim/test_accuracy.py +0 -137
  204. tests/sim/test_checkbyte.py +0 -53
  205. tests/sim/test_echo.py +0 -36
  206. tests/sim/test_fauxware.py +0 -202
  207. tests/sim/test_self_modifying_code.py +0 -65
  208. tests/sim/test_simple_api.py +0 -36
  209. tests/sim/test_simulation_manager.py +0 -147
  210. tests/sim/test_stack_alignment.py +0 -65
  211. tests/sim/test_state.py +0 -303
  212. tests/sim/test_state_customization.py +0 -54
  213. tests/sim/test_symbol_hooked_by.py +0 -49
  214. tests/simos/__init__.py +0 -0
  215. tests/simos/windows/__init__.py +0 -0
  216. tests/simos/windows/test_windows_stack_cookie.py +0 -58
  217. tests/state_plugins/__init__.py +0 -0
  218. tests/state_plugins/inspect/__init__.py +0 -0
  219. tests/state_plugins/inspect/test_inspect.py +0 -310
  220. tests/state_plugins/inspect/test_syscall_override.py +0 -90
  221. tests/state_plugins/posix/__init__.py +0 -0
  222. tests/state_plugins/posix/test_file_struct_funcs.py +0 -56
  223. tests/state_plugins/posix/test_files.py +0 -69
  224. tests/state_plugins/posix/test_posix.py +0 -72
  225. tests/state_plugins/solver/__init__.py +0 -0
  226. tests/state_plugins/solver/test_simsolver.py +0 -58
  227. tests/state_plugins/solver/test_symbolic.py +0 -153
  228. tests/state_plugins/solver/test_variable_registration.py +0 -46
  229. tests/state_plugins/test_callstack.py +0 -54
  230. tests/state_plugins/test_gdb_plugin.py +0 -35
  231. tests/state_plugins/test_multi_open_file.py +0 -47
  232. tests/state_plugins/test_symbolization.py +0 -38
  233. tests/storage/__init__.py +0 -0
  234. tests/storage/test_memory.py +0 -960
  235. tests/storage/test_memory_merge.py +0 -114
  236. tests/storage/test_memview.py +0 -205
  237. tests/storage/test_mmap.py +0 -26
  238. tests/storage/test_multivalues.py +0 -44
  239. tests/storage/test_permissions.py +0 -32
  240. tests/storage/test_ptmalloc.py +0 -291
  241. tests/storage/test_relro_perm.py +0 -49
  242. tests/test_calling_conventions.py +0 -86
  243. tests/test_types.py +0 -329
  244. tests/utils/__init__.py +0 -0
  245. tests/utils/test_graph.py +0 -41
  246. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/LICENSE +0 -0
  247. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/WHEEL +0 -0
  248. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/entry_points.txt +0 -0
@@ -1,153 +0,0 @@
1
- #!/usr/bin/env python3
2
- # pylint: disable=missing-class-docstring,no-self-use,line-too-long
3
- __package__ = __package__ or "tests.state_plugins.solver" # pylint:disable=redefined-builtin
4
-
5
- import unittest
6
-
7
- import angr
8
-
9
- from ...common import broken
10
-
11
-
12
- class TestSymbolic(unittest.TestCase):
13
- # @broken
14
- # def test_symvalue(self):
15
- # # concrete symvalue
16
- # zero = SimValue(se.BVV(0, 64))
17
- # assert not zero.is_symbolic()
18
- # assert zero.eval() == 0
19
- #
20
- # # symbolic symvalue
21
- # x = se.BVS('x', 64)
22
- # sym = SimValue(x, constraints = [ x > 100, x < 200 ])
23
- # assert sym.is_symbolic()
24
- # assert sym.min_int() == 101
25
- # assert sym.max_int() == 199
26
- # assert sym.eval_upto(99) == range(101, 200)
27
-
28
- def test_concretization_strategies(self):
29
- initial_memory = {0: b"A", 1: b"B", 2: b"C", 3: b"D"}
30
-
31
- s = angr.SimState(arch="AMD64", dict_memory_backer=initial_memory)
32
-
33
- # sanity check
34
- assert s.solver.eval_upto(s.memory.load(3, size=1), 2, cast_to=bytes) == [b"D"]
35
-
36
- x = s.solver.BVS("x", s.arch.bits)
37
- s.add_constraints(x >= 1)
38
- s.add_constraints(x <= 3)
39
-
40
- ss = s.copy()
41
- assert tuple(sorted(ss.solver.eval_upto(ss.memory.load(x, 1), 10, cast_to=bytes))) == (b"B", b"C", b"D")
42
-
43
- ss = s.copy()
44
- x = s.solver.BVS("x", s.arch.bits)
45
- s.add_constraints(x >= 1)
46
- ss.options.add(angr.options.CONSERVATIVE_READ_STRATEGY)
47
- ss.memory._create_default_read_strategies()
48
- assert "symbolic" in next(iter(ss.memory.load(x, 1).variables))
49
-
50
- # def test_concretization(self):
51
- # s = angr.SimState(arch="AMD64", mode="symbolic")
52
- # dst = s.solver.BVV(0x41424300, 32)
53
- # dst_addr = s.solver.BVV(0x1000, 64)
54
- # s.memory.store(dst_addr, dst, 4)
55
-
56
- # print "MEM KEYS", s.memory.mem.keys()
57
- # print "REG KEYS", s.registers.mem.keys()
58
-
59
- # print "TO NATIVE..."
60
- # s.set_native(True)
61
- # print "... done"
62
-
63
- # vv = s.native_env.vexecute(pyvex.IRExpr.Load("Iend_BE", "Ity_I32",
64
- # pyvex.IRExpr.Const(pyvex.IRConst.U64(0x1000))))
65
- # assert vv.str[:4] == 'ABC\x00'
66
- # s.native_env.vexecute(pyvex.IRSB(bytes='\xb8\x41\x42\x43\x44'))
67
-
68
- # #import IPython; IPython.embed()
69
- # print "FROM NATIVE..."
70
- # s.set_native(False)
71
- # print "... done"
72
-
73
- # assert s.reg_value(16).solver.eval() == 0x44434241
74
- # print "YEAH"
75
-
76
- @broken
77
- def test_symbolic_write(self):
78
- s = angr.SimState(arch="AMD64", mode="symbolic")
79
-
80
- addr = s.solver.BVS("addr", 64)
81
- s.add_constraints(s.solver.Or(addr == 10, addr == 20, addr == 30))
82
- assert len(s.solver.eval_upto(addr, 10)) == 3
83
-
84
- s.memory.store(10, s.solver.BVV(1, 8))
85
- s.memory.store(20, s.solver.BVV(2, 8))
86
- s.memory.store(30, s.solver.BVV(3, 8))
87
-
88
- assert s.solver.unique(s.memory.load(10, 1))
89
- assert s.solver.unique(s.memory.load(20, 1))
90
- assert s.solver.unique(s.memory.load(30, 1))
91
-
92
- # print "CONSTRAINTS BEFORE:", s.constraints._solver.constraints
93
- # s.memory.store(addr, s.solver.BVV(255, 8), strategy=['symbolic','any'], limit=100)
94
- s.memory.store(addr, s.solver.BVV(255, 8))
95
- assert s.satisfiable()
96
-
97
- assert len(s.solver.eval_upto(addr, 10)) == 3
98
- assert s.solver.eval_upto(s.memory.load(10, 1), 3) == [1, 255]
99
- assert s.solver.eval_upto(s.memory.load(20, 1), 3) == [2, 255]
100
- assert s.solver.eval_upto(s.memory.load(30, 1), 3) == [3, 255]
101
- assert len(s.solver.eval_upto(addr, 10)) == 3
102
-
103
- # see if it works when constraining the write address
104
- sa = s.copy()
105
- sa.add_constraints(addr == 20)
106
- assert sa.satisfiable()
107
- assert sa.solver.eval_upto(sa.memory.load(10, 1), 3) == [1]
108
- assert sa.solver.eval_upto(sa.memory.load(20, 1), 3) == [255]
109
- assert sa.solver.eval_upto(sa.memory.load(30, 1), 3) == [3]
110
- assert sa.solver.eval_upto(addr, 10) == [20]
111
-
112
- # see if it works when constraining a value to the written one
113
- sv = s.copy()
114
- sv.add_constraints(sv.memory.load(30, 1) == 255)
115
- assert sv.satisfiable()
116
- assert sv.solver.eval_upto(sv.memory.load(10, 1), 3) == [1]
117
- assert sv.solver.eval_upto(sv.memory.load(20, 1), 3) == [2]
118
- assert sv.solver.eval_upto(sv.memory.load(30, 1), 3) == [255]
119
- assert sv.solver.eval_upto(addr, 10) == [30]
120
-
121
- # see if it works when constraining a value to the unwritten one
122
- sv = s.copy()
123
- sv.add_constraints(sv.memory.load(30, 1) == 3)
124
- assert sv.satisfiable()
125
- assert sv.solver.eval_upto(sv.memory.load(10, 1), 3) == [1, 255]
126
- assert sv.solver.eval_upto(sv.memory.load(20, 1), 3) == [2, 255]
127
- assert sv.solver.eval_upto(sv.memory.load(30, 1), 3) == [3]
128
- assert sv.solver.eval_upto(addr, 10) == [10, 20]
129
-
130
- s = angr.SimState(arch="AMD64", mode="symbolic")
131
- s.memory.store(0, s.solver.BVV(0x4141414141414141, 64))
132
- length = s.solver.BVS("length", 32)
133
- # s.memory.store(0, s.solver.BVV(0x4242424242424242, 64), symbolic_length=length)
134
- s.memory.store(0, s.solver.BVV(0x4242424242424242, 64))
135
-
136
- for i in range(8):
137
- ss = s.copy()
138
- ss.add_constraints(length == i)
139
- assert ss.solver.eval(s.memory.load(0, 8), cast_to=bytes) == b"B" * i + b"A" * (8 - i)
140
-
141
- def test_unsat_core(self):
142
- s = angr.SimState(arch="AMD64", mode="symbolic", add_options={angr.options.CONSTRAINT_TRACKING_IN_SOLVER})
143
- x = s.solver.BVS("x", 32)
144
- s.add_constraints(s.solver.BVV(0, 32) == x)
145
- s.add_constraints(s.solver.BVV(1, 32) == x)
146
-
147
- assert not s.satisfiable()
148
- unsat_core = s.solver.unsat_core()
149
- assert len(unsat_core) == 2
150
-
151
-
152
- if __name__ == "__main__":
153
- unittest.main()
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env python3
2
- # pylint: disable=missing-class-docstring,no-self-use,line-too-long
3
-
4
- import unittest
5
-
6
- import angr
7
-
8
-
9
- class TestVariableRegistration(unittest.TestCase):
10
- def test_registration(self):
11
- s = angr.SimState(arch="AMD64")
12
-
13
- a1 = s.solver.BVS("a", 64, key=(1,), eternal=True)
14
- a2 = s.solver.BVS("a", 64, key=(1,), eternal=True)
15
- assert a1 is a2
16
-
17
- b1 = s.solver.BVS("b", 64, key=(2,), eternal=False)
18
- s1 = s.copy()
19
- s2 = s.copy()
20
-
21
- b2 = s1.solver.BVS("b", 64, key=(2,), eternal=False)
22
- b3 = s2.solver.BVS("b", 64, key=(2,), eternal=False)
23
- assert b1 is not b2
24
- assert b2 is not b3
25
- assert b1 is not b3
26
-
27
- a3 = s1.solver.BVS("a", 64, key=(1,), eternal=True)
28
- a4 = s2.solver.BVS("a", 64, key=(1,), eternal=True)
29
- assert a2 is a3
30
- assert a3 is a4
31
-
32
- assert len(list(s.solver.get_variables(1))) == 1
33
- assert len(list(s1.solver.get_variables(1))) == 1
34
- assert len(list(s2.solver.get_variables(1))) == 1
35
-
36
- assert len(list(s.solver.get_variables(2))) == 1
37
- assert len(list(s1.solver.get_variables(2))) == 2
38
- assert len(list(s2.solver.get_variables(2))) == 2
39
-
40
- assert list(s.solver.describe_variables(a1)) == [(1,)]
41
- assert list(s.solver.describe_variables(b1)) == [(2, 1)]
42
- assert sorted(list(s.solver.describe_variables(a1 + b1))) == [(1,), (2, 1)]
43
-
44
-
45
- if __name__ == "__main__":
46
- unittest.main()
@@ -1,54 +0,0 @@
1
- #!/usr/bin/env python3
2
- import unittest
3
-
4
- from angr.state_plugins.callstack import CallStack
5
-
6
-
7
- # pylint: disable=missing-class-docstring
8
- # pylint: disable=no-self-use
9
- class TestCallstack(unittest.TestCase):
10
- def test_empty_stack(self):
11
- cs = CallStack()
12
-
13
- # Initial setting: just assume the control flow starts from 0x300000
14
- cs = cs.call(None, 0x300000, None, 0xFFFFFFF0)
15
-
16
- # Calling 0x401000 from 0x400000. When it returns, it should return to 0x400004.
17
- # The stack pointer after entering the new function should be 0xffffff00
18
- # Note: this means on platforms like x86 and AMD64 where CALL instruction actually pushes the ret address on to
19
- # the stack and modifies the stack pointer, the user should adjust stack pointer accordingly (minus 4 or 8, for
20
- # example) before passing to CallStack.call(). CallStack has no way to know what the architecture it is used on.
21
- cs = cs.call(0x400000, 0x401000, 0x400004, 0xFFFFFF00)
22
-
23
- cs = cs.call(0x401008, 0x402000, 0x40100C, 0xFFFFFE80)
24
-
25
- assert cs.current_function_address == 0x402000
26
- assert cs.current_stack_pointer == 0xFFFFFE80
27
-
28
- # Return to 0x40100c
29
- cs = cs.ret(0x40100C)
30
-
31
- assert cs.current_function_address == 0x401000
32
- assert cs.current_stack_pointer == 0xFFFFFF00
33
-
34
- cs = cs.ret(0x400004)
35
-
36
- assert cs.current_function_address == 0x300000
37
- assert cs.current_stack_pointer == 0xFFFFFFF0
38
-
39
- # We return one more time to see what happens
40
- # Ideally nothing should be popped out
41
- cs = cs.ret(0x200000)
42
-
43
- assert cs.current_function_address == 0x300000
44
- assert cs.current_stack_pointer == 0xFFFFFFF0
45
-
46
- # Final return!
47
- cs = cs.ret(None)
48
-
49
- assert cs.current_function_address == 0
50
- assert cs.current_stack_pointer == 0
51
-
52
-
53
- if __name__ == "__main__":
54
- unittest.main()
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env python3
2
- # pylint: disable=missing-class-docstring,disable=no-self-use
3
- __package__ = __package__ or "tests.state_plugins" # pylint:disable=redefined-builtin
4
-
5
- import os
6
- import unittest
7
-
8
- import angr
9
-
10
- from ..common import bin_location
11
-
12
-
13
- test_location = os.path.join(bin_location, "tests")
14
- data_location = os.path.join(bin_location, "tests_data", "test_gdb_plugin")
15
-
16
-
17
- class TestGdbPlugin(unittest.TestCase):
18
- def test_gdb(self):
19
- p = angr.Project(os.path.join(test_location, "x86_64", "test_gdb_plugin"), auto_load_libs=False)
20
- st = p.factory.blank_state()
21
-
22
- st.gdb.set_stack(os.path.join(data_location, "stack"), stack_top=0x7FFFFFFFF000)
23
- st.gdb.set_heap(os.path.join(data_location, "heap"), heap_base=0x601000)
24
- st.gdb.set_regs(os.path.join(data_location, "regs"))
25
-
26
- assert st.solver.eval(st.regs.rip) == 0x4005B4
27
-
28
- # Read the byte in memory at $sp + 8
29
- loc = st.solver.eval(st.regs.rsp) + 8
30
- val = st.memory.load(loc, 8, endness=st.arch.memory_endness)
31
- assert st.solver.eval(val) == 0x00601010
32
-
33
-
34
- if __name__ == "__main__":
35
- unittest.main()
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env python3
2
- # pylint: disable=missing-class-docstring,no-self-use,line-too-long
3
- __package__ = __package__ or "tests.state_plugins" # pylint:disable=redefined-builtin
4
-
5
- import os
6
- import unittest
7
-
8
- import angr
9
-
10
- from ..common import bin_location
11
-
12
-
13
- test_location = os.path.join(bin_location, "tests")
14
-
15
-
16
- class TestMultiOpenFile(unittest.TestCase):
17
- def test_multi_open_file(self):
18
- test_bin = os.path.join(test_location, "x86_64", "test_multi_open_file")
19
- # auto_load_libs cannot be disabled as the test fails
20
- b = angr.Project(test_bin)
21
-
22
- pg = b.factory.simulation_manager()
23
- pg.active[0].options.discard("LAZY_SOLVES")
24
- pg.explore()
25
-
26
- assert len(pg.deadended) == 1
27
-
28
- # See the source file in binaries/tests_src/test_multi_open_file.c
29
- # for the tests run
30
- for p in pg.deadended:
31
- assert p.posix.dumps(2) == b""
32
-
33
- # Check that the temp file was deleted
34
- assert p.fs._files == {}
35
-
36
- # Check that the deleted temp file contained the appropriate string
37
- for event in p.history.events:
38
- if event.type == "fs_unlink":
39
- simfile = p.fs.unlinks[event.objects["unlink_idx"]][1]
40
- assert simfile.concretize() == b"foobar and baz"
41
- break
42
- else:
43
- assert False
44
-
45
-
46
- if __name__ == "__main__":
47
- unittest.main()
@@ -1,38 +0,0 @@
1
- #!/usr/bin/env python3
2
- # pylint: disable=missing-class-docstring,no-self-use,line-too-long
3
- __package__ = __package__ or "tests.state_plugins" # pylint:disable=redefined-builtin
4
-
5
- import os
6
- import unittest
7
-
8
- import angr
9
-
10
- from ..common import bin_location
11
-
12
-
13
- test_location = os.path.join(bin_location, "tests")
14
-
15
-
16
- class TestSymbolization(unittest.TestCase):
17
- def test_fauxware_symbolization(self):
18
- p = angr.Project(os.path.join(test_location, "x86_64", "fauxware"), auto_load_libs=False)
19
- sm = p.factory.simulation_manager()
20
-
21
- assert not sm.one_active.regs.rsp.symbolic
22
-
23
- sm.one_active.symbolizer.set_symbolization_for_all_pages()
24
- sm.one_active.symbolizer.resymbolize()
25
-
26
- # assert sm.one_active.regs.rsp.symbolic
27
- assert sm.one_active.symbolizer.symbolized_count
28
-
29
- # make sure pointers get symbolized at runtime
30
- n = sm.one_active.symbolizer.symbolized_count
31
- sm.run()
32
- assert not sm.errored
33
- assert not sm.active
34
- assert sm.one_deadended.symbolizer.symbolized_count > n
35
-
36
-
37
- if __name__ == "__main__":
38
- unittest.main()
tests/storage/__init__.py DELETED
File without changes