angr 9.2.87__py3-none-win_amd64.whl → 9.2.89__py3-none-win_amd64.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 (249) 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/lib/angr_native.dll +0 -0
  24. angr/misc/autoimport.py +26 -0
  25. angr/procedures/definitions/__init__.py +32 -3
  26. angr/utils/constants.py +1 -0
  27. angr/utils/graph.py +20 -1
  28. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/METADATA +7 -6
  29. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/RECORD +33 -245
  30. angr-9.2.89.dist-info/top_level.txt +1 -0
  31. angr/procedures/definitions/ntdll.py +0 -12
  32. angr-9.2.87.dist-info/top_level.txt +0 -2
  33. tests/__init__.py +0 -0
  34. tests/analyses/__init__.py +0 -0
  35. tests/analyses/cfg/__init__.py +0 -0
  36. tests/analyses/cfg/test_cfg_clflush.py +0 -43
  37. tests/analyses/cfg/test_cfg_get_any_node.py +0 -34
  38. tests/analyses/cfg/test_cfg_manager.py +0 -32
  39. tests/analyses/cfg/test_cfg_model.py +0 -55
  40. tests/analyses/cfg/test_cfg_patching.py +0 -378
  41. tests/analyses/cfg/test_cfg_rust_got_resolution.py +0 -36
  42. tests/analyses/cfg/test_cfg_thumb_firmware.py +0 -50
  43. tests/analyses/cfg/test_cfg_vex_postprocessor.py +0 -27
  44. tests/analyses/cfg/test_cfgemulated.py +0 -634
  45. tests/analyses/cfg/test_cfgfast.py +0 -1123
  46. tests/analyses/cfg/test_cfgfast_soot.py +0 -38
  47. tests/analyses/cfg/test_const_resolver.py +0 -38
  48. tests/analyses/cfg/test_iat_resolver.py +0 -37
  49. tests/analyses/cfg/test_jumptables.py +0 -3008
  50. tests/analyses/cfg/test_noop_blocks.py +0 -54
  51. tests/analyses/cfg_slice_to_sink/__init__.py +0 -0
  52. tests/analyses/cfg_slice_to_sink/test_cfg_slice_to_sink.py +0 -93
  53. tests/analyses/cfg_slice_to_sink/test_graph.py +0 -114
  54. tests/analyses/cfg_slice_to_sink/test_transitions.py +0 -28
  55. tests/analyses/decompiler/__init__.py +0 -0
  56. tests/analyses/decompiler/test_baseptr_save_simplifier.py +0 -80
  57. tests/analyses/decompiler/test_decompiler.py +0 -3336
  58. tests/analyses/decompiler/test_peephole_optimizations.py +0 -48
  59. tests/analyses/decompiler/test_propagator_loops.py +0 -101
  60. tests/analyses/decompiler/test_structurer.py +0 -275
  61. tests/analyses/reaching_definitions/__init__.py +0 -0
  62. tests/analyses/reaching_definitions/test_dep_graph.py +0 -432
  63. tests/analyses/reaching_definitions/test_function_handler.py +0 -131
  64. tests/analyses/reaching_definitions/test_heap_allocator.py +0 -46
  65. tests/analyses/reaching_definitions/test_rd_state.py +0 -78
  66. tests/analyses/reaching_definitions/test_reachingdefinitions.py +0 -463
  67. tests/analyses/reaching_definitions/test_subject.py +0 -76
  68. tests/analyses/test_bindiff.py +0 -52
  69. tests/analyses/test_block_simplifier.py +0 -112
  70. tests/analyses/test_boyscout.py +0 -104
  71. tests/analyses/test_calling_convention_analysis.py +0 -352
  72. tests/analyses/test_callsite_maker.py +0 -60
  73. tests/analyses/test_cdg.py +0 -165
  74. tests/analyses/test_cfb.py +0 -37
  75. tests/analyses/test_class_identifier.py +0 -46
  76. tests/analyses/test_clinic.py +0 -30
  77. tests/analyses/test_codetagging.py +0 -32
  78. tests/analyses/test_constantpropagation.py +0 -88
  79. tests/analyses/test_ddg.py +0 -95
  80. tests/analyses/test_ddg_global_var_dependencies.py +0 -83
  81. tests/analyses/test_ddg_memvar_addresses.py +0 -40
  82. tests/analyses/test_disassembly.py +0 -121
  83. tests/analyses/test_find_objects_static.py +0 -35
  84. tests/analyses/test_flirt.py +0 -49
  85. tests/analyses/test_identifier.py +0 -33
  86. tests/analyses/test_init_finder.py +0 -38
  87. tests/analyses/test_proximitygraph.py +0 -31
  88. tests/analyses/test_reassembler.py +0 -295
  89. tests/analyses/test_regionidentifier.py +0 -27
  90. tests/analyses/test_slicing.py +0 -164
  91. tests/analyses/test_stack_pointer_tracker.py +0 -74
  92. tests/analyses/test_static_hooker.py +0 -28
  93. tests/analyses/test_typehoon.py +0 -55
  94. tests/analyses/test_variablerecovery.py +0 -464
  95. tests/analyses/test_vfg.py +0 -221
  96. tests/analyses/test_vtable.py +0 -31
  97. tests/analyses/test_xrefs.py +0 -77
  98. tests/common.py +0 -128
  99. tests/engines/__init__.py +0 -0
  100. tests/engines/light/__init__.py +0 -0
  101. tests/engines/light/test_data.py +0 -17
  102. tests/engines/pcode/__init__.py +0 -0
  103. tests/engines/pcode/test_emulate.py +0 -607
  104. tests/engines/pcode/test_pcode.py +0 -84
  105. tests/engines/test_actions.py +0 -27
  106. tests/engines/test_hook.py +0 -112
  107. tests/engines/test_java.py +0 -697
  108. tests/engines/test_unicorn.py +0 -518
  109. tests/engines/vex/__init__.py +0 -0
  110. tests/engines/vex/test_lifter.py +0 -124
  111. tests/engines/vex/test_vex.py +0 -574
  112. tests/exploration_techniques/__init__.py +0 -0
  113. tests/exploration_techniques/test_cacher.py +0 -45
  114. tests/exploration_techniques/test_director.py +0 -67
  115. tests/exploration_techniques/test_driller_core.py +0 -48
  116. tests/exploration_techniques/test_loop_seer.py +0 -158
  117. tests/exploration_techniques/test_memory_watcher.py +0 -46
  118. tests/exploration_techniques/test_oppologist.py +0 -65
  119. tests/exploration_techniques/test_spiller.py +0 -82
  120. tests/exploration_techniques/test_stochastic.py +0 -40
  121. tests/exploration_techniques/test_tech_builder.py +0 -61
  122. tests/exploration_techniques/test_tracer.py +0 -856
  123. tests/exploration_techniques/test_unique.py +0 -40
  124. tests/exploration_techniques/test_veritesting.py +0 -120
  125. tests/factory/__init__.py +0 -0
  126. tests/factory/block/__init__.py +0 -0
  127. tests/factory/block/test_block_cache.py +0 -33
  128. tests/factory/block/test_keystone.py +0 -106
  129. tests/factory/test_argc.py +0 -101
  130. tests/factory/test_argc_sym.py +0 -110
  131. tests/factory/test_argv.py +0 -158
  132. tests/factory/test_callable.py +0 -266
  133. tests/factory/test_windows_args.py +0 -36
  134. tests/knowledge_plugins/__init__.py +0 -0
  135. tests/knowledge_plugins/cfg/__init__.py +0 -0
  136. tests/knowledge_plugins/cfg/test_cfg_manager.py +0 -36
  137. tests/knowledge_plugins/functions/__init__.py +0 -0
  138. tests/knowledge_plugins/functions/test_function.py +0 -91
  139. tests/knowledge_plugins/functions/test_function2.py +0 -79
  140. tests/knowledge_plugins/functions/test_function_manager.py +0 -139
  141. tests/knowledge_plugins/functions/test_prototypes.py +0 -53
  142. tests/knowledge_plugins/key_definitions/__init__.py +0 -0
  143. tests/knowledge_plugins/key_definitions/test_atoms.py +0 -24
  144. tests/knowledge_plugins/key_definitions/test_environment.py +0 -126
  145. tests/knowledge_plugins/key_definitions/test_heap_address.py +0 -27
  146. tests/knowledge_plugins/key_definitions/test_live_definitions.py +0 -72
  147. tests/knowledge_plugins/test_dwarf_variables.py +0 -240
  148. tests/knowledge_plugins/test_kb_plugins.py +0 -91
  149. tests/knowledge_plugins/test_kb_plugins_dwarf.py +0 -36
  150. tests/knowledge_plugins/test_patches.py +0 -48
  151. tests/misc/__init__.py +0 -0
  152. tests/misc/test_hookset.py +0 -57
  153. tests/perf/__init__.py +0 -0
  154. tests/perf/perf_cfgemulated.py +0 -19
  155. tests/perf/perf_cfgfast.py +0 -18
  156. tests/perf/perf_concrete_execution.py +0 -41
  157. tests/perf/perf_siminspect_nop.py +0 -36
  158. tests/perf/perf_state_copy.py +0 -33
  159. tests/perf/perf_unicorn_0.py +0 -27
  160. tests/perf/perf_unicorn_1.py +0 -23
  161. tests/procedures/__init__.py +0 -0
  162. tests/procedures/glibc/__init__.py +0 -0
  163. tests/procedures/glibc/test_ctype_locale.py +0 -164
  164. tests/procedures/libc/__init__.py +0 -0
  165. tests/procedures/libc/test_fgets.py +0 -53
  166. tests/procedures/libc/test_scanf.py +0 -205
  167. tests/procedures/libc/test_sprintf.py +0 -44
  168. tests/procedures/libc/test_sscanf.py +0 -63
  169. tests/procedures/libc/test_strcasecmp.py +0 -37
  170. tests/procedures/libc/test_string.py +0 -1102
  171. tests/procedures/libc/test_strtol.py +0 -78
  172. tests/procedures/linux_kernel/__init__.py +0 -0
  173. tests/procedures/linux_kernel/test_lseek.py +0 -174
  174. tests/procedures/posix/__init__.py +0 -0
  175. tests/procedures/posix/test_chroot.py +0 -33
  176. tests/procedures/posix/test_getenv.py +0 -78
  177. tests/procedures/posix/test_pwrite_pread.py +0 -57
  178. tests/procedures/posix/test_sim_time.py +0 -46
  179. tests/procedures/posix/test_unlink.py +0 -46
  180. tests/procedures/test_project_resolve_simproc.py +0 -43
  181. tests/procedures/test_sim_procedure.py +0 -117
  182. tests/procedures/test_stub_procedure_args.py +0 -53
  183. tests/serialization/__init__.py +0 -0
  184. tests/serialization/test_db.py +0 -197
  185. tests/serialization/test_pickle.py +0 -95
  186. tests/serialization/test_serialization.py +0 -132
  187. tests/serialization/test_vault.py +0 -169
  188. tests/sim/__init__.py +0 -3
  189. tests/sim/exec_func/__init__.py +0 -0
  190. tests/sim/exec_func/test_mem_funcs.py +0 -55
  191. tests/sim/exec_func/test_str_funcs.py +0 -93
  192. tests/sim/exec_func/test_syscall_result.py +0 -39
  193. tests/sim/exec_insn/__init__.py +0 -0
  194. tests/sim/exec_insn/test_adc.py +0 -44
  195. tests/sim/exec_insn/test_ops.py +0 -83
  196. tests/sim/exec_insn/test_rcr.py +0 -26
  197. tests/sim/exec_insn/test_rol.py +0 -51
  198. tests/sim/exec_insn/test_signed_div.py +0 -34
  199. tests/sim/exec_insn/test_sqrt.py +0 -56
  200. tests/sim/options/__init__.py +0 -0
  201. tests/sim/options/test_0div.py +0 -54
  202. tests/sim/options/test_symbolic_fd.py +0 -59
  203. tests/sim/options/test_unsupported.py +0 -34
  204. tests/sim/test_accuracy.py +0 -137
  205. tests/sim/test_checkbyte.py +0 -53
  206. tests/sim/test_echo.py +0 -36
  207. tests/sim/test_fauxware.py +0 -202
  208. tests/sim/test_self_modifying_code.py +0 -65
  209. tests/sim/test_simple_api.py +0 -36
  210. tests/sim/test_simulation_manager.py +0 -147
  211. tests/sim/test_stack_alignment.py +0 -65
  212. tests/sim/test_state.py +0 -303
  213. tests/sim/test_state_customization.py +0 -54
  214. tests/sim/test_symbol_hooked_by.py +0 -49
  215. tests/simos/__init__.py +0 -0
  216. tests/simos/windows/__init__.py +0 -0
  217. tests/simos/windows/test_windows_stack_cookie.py +0 -58
  218. tests/state_plugins/__init__.py +0 -0
  219. tests/state_plugins/inspect/__init__.py +0 -0
  220. tests/state_plugins/inspect/test_inspect.py +0 -310
  221. tests/state_plugins/inspect/test_syscall_override.py +0 -90
  222. tests/state_plugins/posix/__init__.py +0 -0
  223. tests/state_plugins/posix/test_file_struct_funcs.py +0 -56
  224. tests/state_plugins/posix/test_files.py +0 -69
  225. tests/state_plugins/posix/test_posix.py +0 -72
  226. tests/state_plugins/solver/__init__.py +0 -0
  227. tests/state_plugins/solver/test_simsolver.py +0 -58
  228. tests/state_plugins/solver/test_symbolic.py +0 -153
  229. tests/state_plugins/solver/test_variable_registration.py +0 -46
  230. tests/state_plugins/test_callstack.py +0 -54
  231. tests/state_plugins/test_gdb_plugin.py +0 -35
  232. tests/state_plugins/test_multi_open_file.py +0 -47
  233. tests/state_plugins/test_symbolization.py +0 -38
  234. tests/storage/__init__.py +0 -0
  235. tests/storage/test_memory.py +0 -960
  236. tests/storage/test_memory_merge.py +0 -114
  237. tests/storage/test_memview.py +0 -205
  238. tests/storage/test_mmap.py +0 -26
  239. tests/storage/test_multivalues.py +0 -44
  240. tests/storage/test_permissions.py +0 -32
  241. tests/storage/test_ptmalloc.py +0 -291
  242. tests/storage/test_relro_perm.py +0 -49
  243. tests/test_calling_conventions.py +0 -86
  244. tests/test_types.py +0 -329
  245. tests/utils/__init__.py +0 -0
  246. tests/utils/test_graph.py +0 -41
  247. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/LICENSE +0 -0
  248. {angr-9.2.87.dist-info → angr-9.2.89.dist-info}/WHEEL +0 -0
  249. {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