angr 9.2.117__py3-none-manylinux2014_aarch64.whl → 9.2.119__py3-none-manylinux2014_aarch64.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 (1317) hide show
  1. angr/__init__.py +2 -1
  2. angr/__main__.py +21 -1
  3. angr/analyses/__init__.py +4 -0
  4. angr/analyses/analysis.py +88 -46
  5. angr/analyses/backward_slice.py +15 -18
  6. angr/analyses/binary_optimizer.py +29 -34
  7. angr/analyses/bindiff.py +35 -44
  8. angr/analyses/boyscout.py +1 -0
  9. angr/analyses/callee_cleanup_finder.py +3 -4
  10. angr/analyses/calling_convention.py +98 -98
  11. angr/analyses/cdg.py +5 -12
  12. angr/analyses/cfg/__init__.py +1 -0
  13. angr/analyses/cfg/cfb.py +14 -20
  14. angr/analyses/cfg/cfg.py +2 -1
  15. angr/analyses/cfg/cfg_arch_options.py +4 -1
  16. angr/analyses/cfg/cfg_base.py +122 -165
  17. angr/analyses/cfg/cfg_emulated.py +60 -92
  18. angr/analyses/cfg/cfg_fast.py +406 -335
  19. angr/analyses/cfg/cfg_fast_soot.py +10 -17
  20. angr/analyses/cfg/cfg_job_base.py +6 -7
  21. angr/analyses/cfg/indirect_jump_resolvers/__init__.py +1 -0
  22. angr/analyses/cfg/indirect_jump_resolvers/amd64_elf_got.py +2 -3
  23. angr/analyses/cfg/indirect_jump_resolvers/amd64_pe_iat.py +2 -3
  24. angr/analyses/cfg/indirect_jump_resolvers/arm_elf_fast.py +6 -8
  25. angr/analyses/cfg/indirect_jump_resolvers/const_resolver.py +3 -5
  26. angr/analyses/cfg/indirect_jump_resolvers/default_resolvers.py +1 -0
  27. angr/analyses/cfg/indirect_jump_resolvers/jumptable.py +97 -112
  28. angr/analyses/cfg/indirect_jump_resolvers/mips_elf_fast.py +26 -32
  29. angr/analyses/cfg/indirect_jump_resolvers/propagator_utils.py +1 -0
  30. angr/analyses/cfg/indirect_jump_resolvers/resolver.py +7 -7
  31. angr/analyses/cfg/indirect_jump_resolvers/x86_elf_pic_plt.py +3 -8
  32. angr/analyses/cfg/indirect_jump_resolvers/x86_pe_iat.py +2 -3
  33. angr/analyses/cfg_slice_to_sink/__init__.py +1 -0
  34. angr/analyses/cfg_slice_to_sink/cfg_slice_to_sink.py +4 -4
  35. angr/analyses/cfg_slice_to_sink/graph.py +4 -1
  36. angr/analyses/cfg_slice_to_sink/transitions.py +4 -2
  37. angr/analyses/class_identifier.py +1 -0
  38. angr/analyses/code_tagging.py +9 -9
  39. angr/analyses/complete_calling_conventions.py +28 -36
  40. angr/analyses/congruency_check.py +6 -11
  41. angr/analyses/data_dep/__init__.py +1 -0
  42. angr/analyses/data_dep/data_dependency_analysis.py +38 -48
  43. angr/analyses/data_dep/dep_nodes.py +13 -12
  44. angr/analyses/data_dep/sim_act_location.py +3 -0
  45. angr/analyses/datagraph_meta.py +7 -7
  46. angr/analyses/ddg.py +48 -69
  47. angr/analyses/decompiler/__init__.py +3 -0
  48. angr/analyses/decompiler/ail_simplifier.py +929 -400
  49. angr/analyses/decompiler/ailgraph_walker.py +1 -0
  50. angr/analyses/decompiler/block_io_finder.py +13 -4
  51. angr/analyses/decompiler/block_similarity.py +28 -18
  52. angr/analyses/decompiler/block_simplifier.py +40 -104
  53. angr/analyses/decompiler/callsite_maker.py +124 -82
  54. angr/analyses/decompiler/ccall_rewriters/__init__.py +1 -0
  55. angr/analyses/decompiler/ccall_rewriters/amd64_ccalls.py +115 -105
  56. angr/analyses/decompiler/ccall_rewriters/rewriter_base.py +2 -1
  57. angr/analyses/decompiler/clinic.py +371 -184
  58. angr/analyses/decompiler/condition_processor.py +127 -116
  59. angr/analyses/decompiler/counters/__init__.py +5 -0
  60. angr/analyses/decompiler/counters/boolean_counter.py +27 -0
  61. angr/analyses/decompiler/{call_counter.py → counters/call_counter.py} +5 -4
  62. angr/analyses/decompiler/{expression_counters.py → counters/expression_counters.py} +5 -4
  63. angr/analyses/decompiler/counters/seq_cf_structure_counter.py +63 -0
  64. angr/analyses/decompiler/decompilation_cache.py +2 -1
  65. angr/analyses/decompiler/decompilation_options.py +1 -0
  66. angr/analyses/decompiler/decompiler.py +50 -27
  67. angr/analyses/decompiler/dephication/__init__.py +6 -0
  68. angr/analyses/decompiler/dephication/dephication_base.py +87 -0
  69. angr/analyses/decompiler/dephication/graph_dephication.py +63 -0
  70. angr/analyses/decompiler/dephication/graph_rewriting.py +116 -0
  71. angr/analyses/decompiler/dephication/graph_vvar_mapping.py +313 -0
  72. angr/analyses/decompiler/dephication/rewriting_engine.py +247 -0
  73. angr/analyses/decompiler/dephication/seqnode_dephication.py +106 -0
  74. angr/analyses/decompiler/empty_node_remover.py +1 -0
  75. angr/analyses/decompiler/expression_narrower.py +12 -17
  76. angr/analyses/decompiler/goto_manager.py +43 -4
  77. angr/analyses/decompiler/graph_region.py +19 -31
  78. angr/analyses/decompiler/jump_target_collector.py +1 -0
  79. angr/analyses/decompiler/jumptable_entry_condition_rewriter.py +2 -1
  80. angr/analyses/decompiler/optimization_passes/__init__.py +7 -3
  81. angr/analyses/decompiler/optimization_passes/base_ptr_save_simplifier.py +23 -18
  82. angr/analyses/decompiler/optimization_passes/call_stmt_rewriter.py +46 -0
  83. angr/analyses/decompiler/optimization_passes/code_motion.py +4 -2
  84. angr/analyses/decompiler/optimization_passes/const_derefs.py +36 -36
  85. angr/analyses/decompiler/optimization_passes/const_prop_reverter.py +6 -9
  86. angr/analyses/decompiler/optimization_passes/cross_jump_reverter.py +4 -3
  87. angr/analyses/decompiler/optimization_passes/deadblock_remover.py +1 -0
  88. angr/analyses/decompiler/optimization_passes/div_simplifier.py +78 -72
  89. angr/analyses/decompiler/optimization_passes/duplication_reverter/__init__.py +2 -0
  90. angr/analyses/decompiler/optimization_passes/duplication_reverter/ail_merge_graph.py +503 -0
  91. angr/analyses/decompiler/optimization_passes/duplication_reverter/duplication_reverter.py +1215 -0
  92. angr/analyses/decompiler/optimization_passes/duplication_reverter/errors.py +16 -0
  93. angr/analyses/decompiler/optimization_passes/duplication_reverter/similarity.py +126 -0
  94. angr/analyses/decompiler/optimization_passes/duplication_reverter/utils.py +169 -0
  95. angr/analyses/decompiler/optimization_passes/engine_base.py +60 -63
  96. angr/analyses/decompiler/optimization_passes/expr_op_swapper.py +6 -7
  97. angr/analyses/decompiler/optimization_passes/flip_boolean_cmp.py +1 -0
  98. angr/analyses/decompiler/optimization_passes/inlined_string_transformation_simplifier.py +102 -37
  99. angr/analyses/decompiler/optimization_passes/ite_expr_converter.py +8 -10
  100. angr/analyses/decompiler/optimization_passes/ite_region_converter.py +128 -18
  101. angr/analyses/decompiler/optimization_passes/lowered_switch_simplifier.py +142 -145
  102. angr/analyses/decompiler/optimization_passes/mod_simplifier.py +27 -23
  103. angr/analyses/decompiler/optimization_passes/multi_simplifier.py +30 -34
  104. angr/analyses/decompiler/optimization_passes/optimization_pass.py +108 -47
  105. angr/analyses/decompiler/optimization_passes/register_save_area_simplifier.py +10 -3
  106. angr/analyses/decompiler/optimization_passes/ret_addr_save_simplifier.py +5 -6
  107. angr/analyses/decompiler/optimization_passes/ret_deduplicator.py +3 -2
  108. angr/analyses/decompiler/optimization_passes/return_duplicator_base.py +125 -13
  109. angr/analyses/decompiler/optimization_passes/return_duplicator_high.py +1 -0
  110. angr/analyses/decompiler/optimization_passes/return_duplicator_low.py +3 -2
  111. angr/analyses/decompiler/optimization_passes/stack_canary_simplifier.py +52 -21
  112. angr/analyses/decompiler/optimization_passes/switch_default_case_duplicator.py +3 -2
  113. angr/analyses/decompiler/optimization_passes/win_stack_canary_simplifier.py +47 -36
  114. angr/analyses/decompiler/optimization_passes/x86_gcc_getpc_simplifier.py +2 -1
  115. angr/analyses/decompiler/peephole_optimizations/__init__.py +2 -0
  116. angr/analyses/decompiler/peephole_optimizations/a_div_const_add_a_mul_n_div_const.py +26 -22
  117. angr/analyses/decompiler/peephole_optimizations/a_mul_const_div_shr_const.py +2 -2
  118. angr/analyses/decompiler/peephole_optimizations/a_shl_const_sub_a.py +1 -0
  119. angr/analyses/decompiler/peephole_optimizations/a_sub_a_div.py +2 -2
  120. angr/analyses/decompiler/peephole_optimizations/a_sub_a_div_const_mul_const.py +1 -0
  121. angr/analyses/decompiler/peephole_optimizations/a_sub_a_sub_n.py +8 -4
  122. angr/analyses/decompiler/peephole_optimizations/arm_cmpf.py +28 -27
  123. angr/analyses/decompiler/peephole_optimizations/base.py +17 -20
  124. angr/analyses/decompiler/peephole_optimizations/basepointeroffset_add_n.py +1 -0
  125. angr/analyses/decompiler/peephole_optimizations/basepointeroffset_and_mask.py +1 -0
  126. angr/analyses/decompiler/peephole_optimizations/bitwise_or_to_logical_or.py +2 -2
  127. angr/analyses/decompiler/peephole_optimizations/bool_expr_xor_1.py +2 -2
  128. angr/analyses/decompiler/peephole_optimizations/bswap.py +29 -22
  129. angr/analyses/decompiler/peephole_optimizations/cmpord_rewriter.py +3 -4
  130. angr/analyses/decompiler/peephole_optimizations/coalesce_adjacent_shrs.py +39 -0
  131. angr/analyses/decompiler/peephole_optimizations/coalesce_same_cascading_ifs.py +2 -1
  132. angr/analyses/decompiler/peephole_optimizations/const_mull_a_shift.py +94 -29
  133. angr/analyses/decompiler/peephole_optimizations/constant_derefs.py +1 -0
  134. angr/analyses/decompiler/peephole_optimizations/conv_a_sub0_shr_and.py +48 -49
  135. angr/analyses/decompiler/peephole_optimizations/conv_shl_shr.py +1 -0
  136. angr/analyses/decompiler/peephole_optimizations/eager_eval.py +41 -34
  137. angr/analyses/decompiler/peephole_optimizations/extended_byte_and_mask.py +2 -1
  138. angr/analyses/decompiler/peephole_optimizations/inlined_strcpy.py +28 -18
  139. angr/analyses/decompiler/peephole_optimizations/inlined_strcpy_consolidation.py +8 -4
  140. angr/analyses/decompiler/peephole_optimizations/inlined_wstrcpy.py +28 -18
  141. angr/analyses/decompiler/peephole_optimizations/invert_negated_logical_conjuction_disjunction.py +32 -32
  142. angr/analyses/decompiler/peephole_optimizations/one_sub_bool.py +2 -2
  143. angr/analyses/decompiler/peephole_optimizations/remove_cascading_conversions.py +23 -3
  144. angr/analyses/decompiler/peephole_optimizations/remove_empty_if_body.py +2 -1
  145. angr/analyses/decompiler/peephole_optimizations/remove_noop_conversions.py +4 -0
  146. angr/analyses/decompiler/peephole_optimizations/remove_redundant_bitmasks.py +1 -0
  147. angr/analyses/decompiler/peephole_optimizations/remove_redundant_conversions.py +4 -6
  148. angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_branch.py +14 -13
  149. angr/analyses/decompiler/peephole_optimizations/remove_redundant_ite_comparisons.py +2 -2
  150. angr/analyses/decompiler/peephole_optimizations/remove_redundant_nots.py +1 -0
  151. angr/analyses/decompiler/peephole_optimizations/remove_redundant_reinterprets.py +3 -2
  152. angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts.py +2 -2
  153. angr/analyses/decompiler/peephole_optimizations/remove_redundant_shifts_around_comparators.py +20 -16
  154. angr/analyses/decompiler/peephole_optimizations/rewrite_bit_extractions.py +3 -3
  155. angr/analyses/decompiler/peephole_optimizations/rewrite_mips_gp_loads.py +4 -2
  156. angr/analyses/decompiler/peephole_optimizations/rol_ror.py +66 -40
  157. angr/analyses/decompiler/peephole_optimizations/sar_to_signed_div.py +64 -57
  158. angr/analyses/decompiler/peephole_optimizations/simplify_pc_relative_loads.py +14 -14
  159. angr/analyses/decompiler/peephole_optimizations/single_bit_cond_to_boolexpr.py +1 -0
  160. angr/analyses/decompiler/peephole_optimizations/single_bit_xor.py +8 -5
  161. angr/analyses/decompiler/peephole_optimizations/tidy_stack_addr.py +4 -6
  162. angr/analyses/decompiler/redundant_label_remover.py +20 -19
  163. angr/analyses/decompiler/region_identifier.py +64 -77
  164. angr/analyses/decompiler/region_simplifiers/__init__.py +1 -0
  165. angr/analyses/decompiler/region_simplifiers/cascading_cond_transformer.py +2 -1
  166. angr/analyses/decompiler/region_simplifiers/cascading_ifs.py +1 -0
  167. angr/analyses/decompiler/region_simplifiers/expr_folding.py +43 -29
  168. angr/analyses/decompiler/region_simplifiers/goto.py +1 -0
  169. angr/analyses/decompiler/region_simplifiers/if_.py +29 -36
  170. angr/analyses/decompiler/region_simplifiers/ifelse.py +1 -0
  171. angr/analyses/decompiler/region_simplifiers/loop.py +27 -13
  172. angr/analyses/decompiler/region_simplifiers/node_address_finder.py +1 -0
  173. angr/analyses/decompiler/region_simplifiers/region_simplifier.py +1 -0
  174. angr/analyses/decompiler/region_simplifiers/switch_cluster_simplifier.py +12 -16
  175. angr/analyses/decompiler/region_simplifiers/switch_expr_simplifier.py +36 -32
  176. angr/analyses/decompiler/region_walker.py +1 -0
  177. angr/analyses/decompiler/return_maker.py +1 -0
  178. angr/analyses/decompiler/seq_to_blocks.py +1 -0
  179. angr/analyses/decompiler/sequence_walker.py +5 -10
  180. angr/analyses/decompiler/ssailification/__init__.py +4 -0
  181. angr/analyses/decompiler/ssailification/rewriting.py +325 -0
  182. angr/analyses/decompiler/ssailification/rewriting_engine.py +601 -0
  183. angr/analyses/decompiler/ssailification/rewriting_state.py +60 -0
  184. angr/analyses/decompiler/ssailification/ssailification.py +213 -0
  185. angr/analyses/decompiler/ssailification/traversal.py +97 -0
  186. angr/analyses/decompiler/ssailification/traversal_engine.py +131 -0
  187. angr/analyses/decompiler/ssailification/traversal_state.py +42 -0
  188. angr/analyses/decompiler/structured_codegen/__init__.py +1 -0
  189. angr/analyses/decompiler/structured_codegen/base.py +2 -2
  190. angr/analyses/decompiler/structured_codegen/c.py +172 -160
  191. angr/analyses/decompiler/structured_codegen/dummy.py +1 -0
  192. angr/analyses/decompiler/structured_codegen/dwarf_import.py +1 -0
  193. angr/analyses/decompiler/structuring/__init__.py +1 -0
  194. angr/analyses/decompiler/structuring/dream.py +27 -43
  195. angr/analyses/decompiler/structuring/phoenix.py +201 -201
  196. angr/analyses/decompiler/structuring/recursive_structurer.py +4 -3
  197. angr/analyses/decompiler/structuring/sailr.py +5 -4
  198. angr/analyses/decompiler/structuring/structurer_base.py +26 -23
  199. angr/analyses/decompiler/structuring/structurer_nodes.py +14 -24
  200. angr/analyses/decompiler/utils.py +112 -52
  201. angr/analyses/disassembly.py +75 -77
  202. angr/analyses/disassembly_utils.py +10 -13
  203. angr/analyses/dominance_frontier.py +25 -7
  204. angr/analyses/find_objects_static.py +3 -2
  205. angr/analyses/flirt.py +7 -10
  206. angr/analyses/forward_analysis/__init__.py +1 -0
  207. angr/analyses/forward_analysis/forward_analysis.py +9 -6
  208. angr/analyses/forward_analysis/job_info.py +3 -3
  209. angr/analyses/forward_analysis/visitors/__init__.py +1 -0
  210. angr/analyses/forward_analysis/visitors/call_graph.py +1 -0
  211. angr/analyses/forward_analysis/visitors/function_graph.py +3 -2
  212. angr/analyses/forward_analysis/visitors/graph.py +9 -9
  213. angr/analyses/forward_analysis/visitors/loop.py +1 -0
  214. angr/analyses/forward_analysis/visitors/single_node_graph.py +2 -2
  215. angr/analyses/identifier/__init__.py +1 -0
  216. angr/analyses/identifier/custom_callable.py +2 -2
  217. angr/analyses/identifier/errors.py +1 -0
  218. angr/analyses/identifier/func.py +6 -3
  219. angr/analyses/identifier/functions/__init__.py +2 -1
  220. angr/analyses/identifier/functions/atoi.py +2 -4
  221. angr/analyses/identifier/functions/based_atoi.py +3 -6
  222. angr/analyses/identifier/functions/fdprintf.py +1 -0
  223. angr/analyses/identifier/functions/free.py +3 -5
  224. angr/analyses/identifier/functions/int2str.py +11 -26
  225. angr/analyses/identifier/functions/malloc.py +4 -6
  226. angr/analyses/identifier/functions/memcmp.py +2 -4
  227. angr/analyses/identifier/functions/memcpy.py +2 -2
  228. angr/analyses/identifier/functions/memset.py +2 -2
  229. angr/analyses/identifier/functions/printf.py +1 -0
  230. angr/analyses/identifier/functions/recv_until.py +3 -6
  231. angr/analyses/identifier/functions/skip_calloc.py +2 -1
  232. angr/analyses/identifier/functions/skip_realloc.py +4 -6
  233. angr/analyses/identifier/functions/skip_recv_n.py +4 -6
  234. angr/analyses/identifier/functions/snprintf.py +2 -4
  235. angr/analyses/identifier/functions/sprintf.py +1 -0
  236. angr/analyses/identifier/functions/strcasecmp.py +1 -0
  237. angr/analyses/identifier/functions/strcmp.py +2 -1
  238. angr/analyses/identifier/functions/strcpy.py +2 -2
  239. angr/analyses/identifier/functions/strlen.py +1 -0
  240. angr/analyses/identifier/functions/strncmp.py +2 -1
  241. angr/analyses/identifier/functions/strncpy.py +2 -2
  242. angr/analyses/identifier/functions/strtol.py +2 -4
  243. angr/analyses/identifier/identify.py +35 -54
  244. angr/analyses/identifier/runner.py +6 -5
  245. angr/analyses/init_finder.py +17 -17
  246. angr/analyses/loop_analysis.py +10 -14
  247. angr/analyses/loopfinder.py +9 -13
  248. angr/analyses/propagator/__init__.py +1 -0
  249. angr/analyses/propagator/engine_ail.py +161 -166
  250. angr/analyses/propagator/engine_base.py +3 -2
  251. angr/analyses/propagator/engine_vex.py +47 -48
  252. angr/analyses/propagator/outdated_definition_walker.py +18 -23
  253. angr/analyses/propagator/propagator.py +8 -12
  254. angr/analyses/propagator/tmpvar_finder.py +1 -0
  255. angr/analyses/propagator/top_checker_mixin.py +2 -4
  256. angr/analyses/propagator/values.py +1 -0
  257. angr/analyses/propagator/vex_vars.py +3 -2
  258. angr/analyses/proximity_graph.py +12 -20
  259. angr/analyses/reaching_definitions/__init__.py +5 -4
  260. angr/analyses/reaching_definitions/call_trace.py +7 -6
  261. angr/analyses/reaching_definitions/dep_graph.py +18 -23
  262. angr/analyses/reaching_definitions/engine_ail.py +89 -121
  263. angr/analyses/reaching_definitions/engine_vex.py +20 -32
  264. angr/analyses/reaching_definitions/function_handler.py +38 -35
  265. angr/analyses/reaching_definitions/function_handler_library/__init__.py +1 -0
  266. angr/analyses/reaching_definitions/function_handler_library/stdio.py +4 -6
  267. angr/analyses/reaching_definitions/function_handler_library/stdlib.py +1 -2
  268. angr/analyses/reaching_definitions/function_handler_library/string.py +2 -4
  269. angr/analyses/reaching_definitions/function_handler_library/unistd.py +1 -0
  270. angr/analyses/reaching_definitions/heap_allocator.py +7 -6
  271. angr/analyses/reaching_definitions/rd_initializer.py +27 -25
  272. angr/analyses/reaching_definitions/rd_state.py +14 -16
  273. angr/analyses/reaching_definitions/reaching_definitions.py +27 -36
  274. angr/analyses/reaching_definitions/subject.py +3 -2
  275. angr/analyses/reassembler.py +189 -253
  276. angr/analyses/s_liveness/__init__.py +2 -0
  277. angr/analyses/s_liveness/s_liveness.py +153 -0
  278. angr/analyses/s_propagator/__init__.py +2 -0
  279. angr/analyses/s_propagator/s_propagator.py +250 -0
  280. angr/analyses/s_reaching_definitions/__init__.py +2 -0
  281. angr/analyses/s_reaching_definitions/s_rda.py +479 -0
  282. angr/analyses/soot_class_hierarchy.py +15 -24
  283. angr/analyses/stack_pointer_tracker.py +106 -98
  284. angr/analyses/static_hooker.py +3 -2
  285. angr/analyses/typehoon/__init__.py +1 -0
  286. angr/analyses/typehoon/dfa.py +5 -5
  287. angr/analyses/typehoon/lifter.py +5 -4
  288. angr/analyses/typehoon/simple_solver.py +80 -64
  289. angr/analyses/typehoon/translator.py +26 -16
  290. angr/analyses/typehoon/typeconsts.py +22 -12
  291. angr/analyses/typehoon/typehoon.py +8 -10
  292. angr/analyses/typehoon/typevars.py +37 -49
  293. angr/analyses/typehoon/variance.py +1 -0
  294. angr/analyses/variable_recovery/__init__.py +1 -0
  295. angr/analyses/variable_recovery/annotations.py +1 -0
  296. angr/analyses/variable_recovery/engine_ail.py +78 -32
  297. angr/analyses/variable_recovery/engine_base.py +233 -59
  298. angr/analyses/variable_recovery/engine_vex.py +17 -21
  299. angr/analyses/variable_recovery/irsb_scanner.py +1 -0
  300. angr/analyses/variable_recovery/variable_recovery.py +14 -16
  301. angr/analyses/variable_recovery/variable_recovery_base.py +12 -14
  302. angr/analyses/variable_recovery/variable_recovery_fast.py +67 -47
  303. angr/analyses/veritesting.py +10 -16
  304. angr/analyses/vfg.py +102 -148
  305. angr/analyses/vsa_ddg.py +3 -5
  306. angr/analyses/vtable.py +6 -6
  307. angr/analyses/xrefs.py +9 -13
  308. angr/angrdb/__init__.py +4 -2
  309. angr/angrdb/db.py +51 -53
  310. angr/angrdb/models.py +1 -0
  311. angr/angrdb/serializers/__init__.py +1 -0
  312. angr/angrdb/serializers/cfg_model.py +2 -2
  313. angr/angrdb/serializers/comments.py +1 -0
  314. angr/angrdb/serializers/funcs.py +4 -3
  315. angr/angrdb/serializers/kb.py +3 -2
  316. angr/angrdb/serializers/labels.py +1 -0
  317. angr/angrdb/serializers/structured_code.py +5 -10
  318. angr/angrdb/serializers/variables.py +6 -6
  319. angr/angrdb/serializers/xrefs.py +2 -2
  320. angr/annocfg.py +17 -25
  321. angr/blade.py +19 -23
  322. angr/block.py +11 -13
  323. angr/callable.py +4 -3
  324. angr/calling_conventions.py +147 -147
  325. angr/code_location.py +12 -13
  326. angr/codenode.py +2 -1
  327. angr/concretization_strategies/__init__.py +6 -6
  328. angr/concretization_strategies/any.py +5 -4
  329. angr/concretization_strategies/any_named.py +1 -0
  330. angr/concretization_strategies/controlled_data.py +1 -0
  331. angr/concretization_strategies/eval.py +2 -2
  332. angr/concretization_strategies/logging.py +1 -0
  333. angr/concretization_strategies/max.py +6 -6
  334. angr/concretization_strategies/nonzero.py +1 -0
  335. angr/concretization_strategies/nonzero_range.py +4 -3
  336. angr/concretization_strategies/norepeats.py +5 -4
  337. angr/concretization_strategies/norepeats_range.py +1 -0
  338. angr/concretization_strategies/range.py +1 -0
  339. angr/concretization_strategies/signed_add.py +13 -9
  340. angr/concretization_strategies/single.py +2 -0
  341. angr/concretization_strategies/solutions.py +1 -0
  342. angr/concretization_strategies/unlimited_range.py +1 -0
  343. angr/distributed/__init__.py +1 -0
  344. angr/distributed/server.py +2 -2
  345. angr/distributed/worker.py +3 -3
  346. angr/engines/__init__.py +1 -0
  347. angr/engines/concrete.py +2 -1
  348. angr/engines/engine.py +4 -6
  349. angr/engines/failure.py +2 -1
  350. angr/engines/hook.py +1 -0
  351. angr/engines/light/__init__.py +1 -0
  352. angr/engines/light/data.py +221 -255
  353. angr/engines/light/engine.py +72 -85
  354. angr/engines/pcode/__init__.py +1 -0
  355. angr/engines/pcode/behavior.py +3 -3
  356. angr/engines/pcode/cc.py +1 -0
  357. angr/engines/pcode/emulate.py +13 -16
  358. angr/engines/pcode/engine.py +7 -5
  359. angr/engines/pcode/lifter.py +62 -79
  360. angr/engines/procedure.py +1 -0
  361. angr/engines/soot/__init__.py +1 -0
  362. angr/engines/soot/engine.py +46 -52
  363. angr/engines/soot/exceptions.py +3 -0
  364. angr/engines/soot/expressions/__init__.py +1 -0
  365. angr/engines/soot/expressions/arrayref.py +1 -0
  366. angr/engines/soot/expressions/base.py +4 -5
  367. angr/engines/soot/expressions/binop.py +1 -0
  368. angr/engines/soot/expressions/cast.py +1 -0
  369. angr/engines/soot/expressions/condition.py +2 -1
  370. angr/engines/soot/expressions/constants.py +1 -0
  371. angr/engines/soot/expressions/instanceOf.py +1 -0
  372. angr/engines/soot/expressions/instancefieldref.py +1 -0
  373. angr/engines/soot/expressions/invoke.py +7 -9
  374. angr/engines/soot/expressions/length.py +1 -0
  375. angr/engines/soot/expressions/local.py +1 -0
  376. angr/engines/soot/expressions/new.py +1 -0
  377. angr/engines/soot/expressions/newArray.py +1 -0
  378. angr/engines/soot/expressions/newMultiArray.py +3 -3
  379. angr/engines/soot/expressions/paramref.py +1 -0
  380. angr/engines/soot/expressions/phi.py +1 -0
  381. angr/engines/soot/expressions/staticfieldref.py +1 -0
  382. angr/engines/soot/expressions/thisref.py +1 -0
  383. angr/engines/soot/expressions/unsupported.py +1 -0
  384. angr/engines/soot/field_dispatcher.py +5 -8
  385. angr/engines/soot/method_dispatcher.py +4 -7
  386. angr/engines/soot/statements/__init__.py +4 -4
  387. angr/engines/soot/statements/assign.py +1 -0
  388. angr/engines/soot/statements/base.py +6 -7
  389. angr/engines/soot/statements/goto.py +2 -1
  390. angr/engines/soot/statements/identity.py +1 -0
  391. angr/engines/soot/statements/if_.py +2 -1
  392. angr/engines/soot/statements/invoke.py +1 -0
  393. angr/engines/soot/statements/return_.py +1 -0
  394. angr/engines/soot/statements/switch.py +1 -0
  395. angr/engines/soot/statements/throw.py +2 -1
  396. angr/engines/soot/values/__init__.py +4 -2
  397. angr/engines/soot/values/arrayref.py +8 -10
  398. angr/engines/soot/values/base.py +4 -1
  399. angr/engines/soot/values/constants.py +1 -0
  400. angr/engines/soot/values/instancefieldref.py +1 -0
  401. angr/engines/soot/values/local.py +1 -0
  402. angr/engines/soot/values/paramref.py +1 -0
  403. angr/engines/soot/values/staticfieldref.py +1 -0
  404. angr/engines/soot/values/strref.py +3 -2
  405. angr/engines/soot/values/thisref.py +1 -0
  406. angr/engines/successors.py +21 -24
  407. angr/engines/syscall.py +9 -9
  408. angr/engines/unicorn.py +14 -9
  409. angr/engines/vex/__init__.py +1 -0
  410. angr/engines/vex/claripy/__init__.py +1 -0
  411. angr/engines/vex/claripy/ccall.py +86 -112
  412. angr/engines/vex/claripy/datalayer.py +12 -16
  413. angr/engines/vex/claripy/irop.py +85 -104
  414. angr/engines/vex/heavy/__init__.py +1 -0
  415. angr/engines/vex/heavy/actions.py +1 -0
  416. angr/engines/vex/heavy/concretizers.py +8 -9
  417. angr/engines/vex/heavy/dirty.py +6 -5
  418. angr/engines/vex/heavy/heavy.py +15 -14
  419. angr/engines/vex/heavy/inspect.py +1 -0
  420. angr/engines/vex/heavy/resilience.py +2 -2
  421. angr/engines/vex/heavy/super_fastpath.py +2 -2
  422. angr/engines/vex/lifter.py +28 -35
  423. angr/engines/vex/light/__init__.py +1 -0
  424. angr/engines/vex/light/light.py +2 -4
  425. angr/engines/vex/light/resilience.py +1 -0
  426. angr/engines/vex/light/slicing.py +1 -0
  427. angr/errors.py +6 -1
  428. angr/exploration_techniques/__init__.py +3 -2
  429. angr/exploration_techniques/bucketizer.py +2 -3
  430. angr/exploration_techniques/common.py +3 -3
  431. angr/exploration_techniques/dfs.py +1 -0
  432. angr/exploration_techniques/director.py +17 -19
  433. angr/exploration_techniques/driller_core.py +3 -7
  434. angr/exploration_techniques/explorer.py +7 -3
  435. angr/exploration_techniques/lengthlimiter.py +1 -0
  436. angr/exploration_techniques/local_loop_seer.py +2 -2
  437. angr/exploration_techniques/loop_seer.py +11 -14
  438. angr/exploration_techniques/manual_mergepoint.py +3 -2
  439. angr/exploration_techniques/memory_watcher.py +1 -0
  440. angr/exploration_techniques/oppologist.py +4 -4
  441. angr/exploration_techniques/slicecutor.py +1 -0
  442. angr/exploration_techniques/spiller.py +8 -8
  443. angr/exploration_techniques/spiller_db.py +1 -0
  444. angr/exploration_techniques/stochastic.py +3 -4
  445. angr/exploration_techniques/stub_stasher.py +1 -0
  446. angr/exploration_techniques/suggestions.py +5 -4
  447. angr/exploration_techniques/symbion.py +1 -0
  448. angr/exploration_techniques/tech_builder.py +1 -0
  449. angr/exploration_techniques/threading.py +1 -0
  450. angr/exploration_techniques/timeout.py +1 -0
  451. angr/exploration_techniques/tracer.py +34 -39
  452. angr/exploration_techniques/unique.py +1 -0
  453. angr/exploration_techniques/veritesting.py +1 -0
  454. angr/factory.py +9 -9
  455. angr/flirt/__init__.py +1 -0
  456. angr/flirt/build_sig.py +8 -12
  457. angr/keyed_region.py +10 -17
  458. angr/knowledge_base/__init__.py +1 -0
  459. angr/knowledge_base/knowledge_base.py +17 -17
  460. angr/knowledge_plugins/__init__.py +1 -0
  461. angr/knowledge_plugins/callsite_prototypes.py +1 -0
  462. angr/knowledge_plugins/cfg/__init__.py +2 -0
  463. angr/knowledge_plugins/cfg/cfg_manager.py +2 -1
  464. angr/knowledge_plugins/cfg/cfg_model.py +27 -43
  465. angr/knowledge_plugins/cfg/cfg_node.py +8 -19
  466. angr/knowledge_plugins/cfg/indirect_jump.py +3 -5
  467. angr/knowledge_plugins/cfg/memory_data.py +4 -3
  468. angr/knowledge_plugins/comments.py +1 -0
  469. angr/knowledge_plugins/custom_strings.py +1 -0
  470. angr/knowledge_plugins/data.py +1 -0
  471. angr/knowledge_plugins/debug_variables.py +18 -23
  472. angr/knowledge_plugins/functions/__init__.py +1 -0
  473. angr/knowledge_plugins/functions/function.py +49 -53
  474. angr/knowledge_plugins/functions/function_manager.py +14 -14
  475. angr/knowledge_plugins/functions/function_parser.py +38 -42
  476. angr/knowledge_plugins/functions/soot_function.py +5 -6
  477. angr/knowledge_plugins/indirect_jumps.py +1 -0
  478. angr/knowledge_plugins/key_definitions/__init__.py +1 -0
  479. angr/knowledge_plugins/key_definitions/atoms.py +65 -17
  480. angr/knowledge_plugins/key_definitions/constants.py +6 -0
  481. angr/knowledge_plugins/key_definitions/definition.py +22 -25
  482. angr/knowledge_plugins/key_definitions/environment.py +18 -14
  483. angr/knowledge_plugins/key_definitions/heap_address.py +4 -3
  484. angr/knowledge_plugins/key_definitions/key_definition_manager.py +5 -4
  485. angr/knowledge_plugins/key_definitions/live_definitions.py +36 -45
  486. angr/knowledge_plugins/key_definitions/liveness.py +18 -23
  487. angr/knowledge_plugins/key_definitions/rd_model.py +29 -34
  488. angr/knowledge_plugins/key_definitions/tag.py +7 -6
  489. angr/knowledge_plugins/key_definitions/undefined.py +3 -0
  490. angr/knowledge_plugins/key_definitions/unknown_size.py +3 -0
  491. angr/knowledge_plugins/key_definitions/uses.py +21 -23
  492. angr/knowledge_plugins/labels.py +3 -2
  493. angr/knowledge_plugins/patches.py +2 -1
  494. angr/knowledge_plugins/plugin.py +2 -1
  495. angr/knowledge_plugins/propagations/__init__.py +1 -0
  496. angr/knowledge_plugins/propagations/prop_value.py +25 -27
  497. angr/knowledge_plugins/propagations/propagation_manager.py +2 -2
  498. angr/knowledge_plugins/propagations/propagation_model.py +5 -4
  499. angr/knowledge_plugins/propagations/states.py +71 -81
  500. angr/knowledge_plugins/structured_code/__init__.py +1 -0
  501. angr/knowledge_plugins/structured_code/manager.py +5 -4
  502. angr/knowledge_plugins/sync/__init__.py +1 -0
  503. angr/knowledge_plugins/sync/sync_controller.py +10 -15
  504. angr/knowledge_plugins/types.py +1 -0
  505. angr/knowledge_plugins/variables/__init__.py +1 -0
  506. angr/knowledge_plugins/variables/variable_access.py +9 -10
  507. angr/knowledge_plugins/variables/variable_manager.py +84 -55
  508. angr/knowledge_plugins/xrefs/__init__.py +1 -0
  509. angr/knowledge_plugins/xrefs/xref.py +7 -11
  510. angr/knowledge_plugins/xrefs/xref_manager.py +1 -0
  511. angr/knowledge_plugins/xrefs/xref_types.py +3 -0
  512. angr/misc/__init__.py +1 -0
  513. angr/misc/ansi.py +1 -0
  514. angr/misc/autoimport.py +3 -2
  515. angr/misc/bug_report.py +6 -5
  516. angr/misc/hookset.py +3 -2
  517. angr/misc/loggers.py +2 -2
  518. angr/misc/picklable_lock.py +1 -0
  519. angr/misc/plugins.py +11 -13
  520. angr/misc/range.py +3 -0
  521. angr/misc/telemetry.py +54 -0
  522. angr/misc/testing.py +2 -1
  523. angr/misc/ux.py +5 -5
  524. angr/misc/weakpatch.py +1 -0
  525. angr/procedures/__init__.py +1 -0
  526. angr/procedures/cgc/_terminate.py +1 -0
  527. angr/procedures/cgc/allocate.py +1 -0
  528. angr/procedures/cgc/deallocate.py +1 -0
  529. angr/procedures/cgc/fdwait.py +1 -0
  530. angr/procedures/cgc/random.py +1 -0
  531. angr/procedures/cgc/receive.py +26 -26
  532. angr/procedures/cgc/transmit.py +1 -0
  533. angr/procedures/definitions/__init__.py +9 -10
  534. angr/procedures/definitions/cgc.py +1 -0
  535. angr/procedures/definitions/glibc.py +1 -0
  536. angr/procedures/definitions/gnulib.py +1 -0
  537. angr/procedures/definitions/libstdcpp.py +1 -0
  538. angr/procedures/definitions/linux_kernel.py +1 -0
  539. angr/procedures/definitions/linux_loader.py +1 -0
  540. angr/procedures/definitions/msvcr.py +1 -0
  541. angr/procedures/definitions/parse_syscalls_from_local_system.py +2 -1
  542. angr/procedures/definitions/parse_win32json.py +27 -30
  543. angr/procedures/definitions/types_win32.py +1 -0
  544. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-4.py +1 -0
  545. angr/procedures/definitions/wdk_api-ms-win-dx-d3dkmt-l1-1-6.py +1 -0
  546. angr/procedures/definitions/wdk_clfs.py +1 -0
  547. angr/procedures/definitions/wdk_fltmgr.py +1 -0
  548. angr/procedures/definitions/wdk_fwpkclnt.py +1 -0
  549. angr/procedures/definitions/wdk_fwpuclnt.py +1 -0
  550. angr/procedures/definitions/wdk_gdi32.py +1 -0
  551. angr/procedures/definitions/wdk_hal.py +1 -0
  552. angr/procedures/definitions/wdk_ksecdd.py +1 -0
  553. angr/procedures/definitions/wdk_ndis.py +1 -0
  554. angr/procedures/definitions/wdk_ntoskrnl.py +1 -0
  555. angr/procedures/definitions/wdk_offreg.py +1 -0
  556. angr/procedures/definitions/wdk_pshed.py +1 -0
  557. angr/procedures/definitions/wdk_secur32.py +1 -0
  558. angr/procedures/definitions/wdk_vhfum.py +1 -0
  559. angr/procedures/definitions/win32_aclui.py +1 -0
  560. angr/procedures/definitions/win32_activeds.py +1 -0
  561. angr/procedures/definitions/win32_advapi32.py +1 -0
  562. angr/procedures/definitions/win32_advpack.py +1 -0
  563. angr/procedures/definitions/win32_amsi.py +1 -0
  564. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-1.py +1 -0
  565. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-3.py +1 -0
  566. angr/procedures/definitions/win32_api-ms-win-appmodel-runtime-l1-1-6.py +1 -0
  567. angr/procedures/definitions/win32_api-ms-win-core-apiquery-l2-1-0.py +1 -0
  568. angr/procedures/definitions/win32_api-ms-win-core-backgroundtask-l1-1-0.py +1 -0
  569. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-1.py +1 -0
  570. angr/procedures/definitions/win32_api-ms-win-core-comm-l1-1-2.py +1 -0
  571. angr/procedures/definitions/win32_api-ms-win-core-enclave-l1-1-1.py +1 -0
  572. angr/procedures/definitions/win32_api-ms-win-core-errorhandling-l1-1-3.py +1 -0
  573. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-0.py +1 -0
  574. angr/procedures/definitions/win32_api-ms-win-core-featurestaging-l1-1-1.py +1 -0
  575. angr/procedures/definitions/win32_api-ms-win-core-file-fromapp-l1-1-0.py +1 -0
  576. angr/procedures/definitions/win32_api-ms-win-core-handle-l1-1-0.py +1 -0
  577. angr/procedures/definitions/win32_api-ms-win-core-ioring-l1-1-0.py +1 -0
  578. angr/procedures/definitions/win32_api-ms-win-core-marshal-l1-1-0.py +1 -0
  579. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-3.py +1 -0
  580. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-4.py +1 -0
  581. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-5.py +1 -0
  582. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-6.py +1 -0
  583. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-7.py +1 -0
  584. angr/procedures/definitions/win32_api-ms-win-core-memory-l1-1-8.py +1 -0
  585. angr/procedures/definitions/win32_api-ms-win-core-path-l1-1-0.py +1 -0
  586. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-0.py +1 -0
  587. angr/procedures/definitions/win32_api-ms-win-core-psm-appnotify-l1-1-1.py +1 -0
  588. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-1.py +1 -0
  589. angr/procedures/definitions/win32_api-ms-win-core-realtime-l1-1-2.py +1 -0
  590. angr/procedures/definitions/win32_api-ms-win-core-slapi-l1-1-0.py +1 -0
  591. angr/procedures/definitions/win32_api-ms-win-core-state-helpers-l1-1-0.py +1 -0
  592. angr/procedures/definitions/win32_api-ms-win-core-synch-l1-2-0.py +1 -0
  593. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-0.py +1 -0
  594. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-3.py +1 -0
  595. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-4.py +1 -0
  596. angr/procedures/definitions/win32_api-ms-win-core-sysinfo-l1-2-6.py +1 -0
  597. angr/procedures/definitions/win32_api-ms-win-core-util-l1-1-1.py +1 -0
  598. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-0.py +1 -0
  599. angr/procedures/definitions/win32_api-ms-win-core-winrt-error-l1-1-1.py +1 -0
  600. angr/procedures/definitions/win32_api-ms-win-core-winrt-l1-1-0.py +1 -0
  601. angr/procedures/definitions/win32_api-ms-win-core-winrt-registration-l1-1-0.py +1 -0
  602. angr/procedures/definitions/win32_api-ms-win-core-winrt-robuffer-l1-1-0.py +1 -0
  603. angr/procedures/definitions/win32_api-ms-win-core-winrt-roparameterizediid-l1-1-0.py +1 -0
  604. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-0.py +1 -0
  605. angr/procedures/definitions/win32_api-ms-win-core-winrt-string-l1-1-1.py +1 -0
  606. angr/procedures/definitions/win32_api-ms-win-core-wow64-l1-1-1.py +1 -0
  607. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-0.py +1 -0
  608. angr/procedures/definitions/win32_api-ms-win-devices-query-l1-1-1.py +1 -0
  609. angr/procedures/definitions/win32_api-ms-win-dx-d3dkmt-l1-1-0.py +1 -0
  610. angr/procedures/definitions/win32_api-ms-win-gaming-deviceinformation-l1-1-0.py +1 -0
  611. angr/procedures/definitions/win32_api-ms-win-gaming-expandedresources-l1-1-0.py +1 -0
  612. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-0.py +1 -0
  613. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-1.py +1 -0
  614. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-2.py +1 -0
  615. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-3.py +1 -0
  616. angr/procedures/definitions/win32_api-ms-win-gaming-tcui-l1-1-4.py +1 -0
  617. angr/procedures/definitions/win32_api-ms-win-mm-misc-l1-1-1.py +1 -0
  618. angr/procedures/definitions/win32_api-ms-win-net-isolation-l1-1-0.py +1 -0
  619. angr/procedures/definitions/win32_api-ms-win-security-base-l1-2-2.py +1 -0
  620. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-0.py +1 -0
  621. angr/procedures/definitions/win32_api-ms-win-security-isolatedcontainer-l1-1-1.py +1 -0
  622. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-3.py +1 -0
  623. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-4.py +1 -0
  624. angr/procedures/definitions/win32_api-ms-win-service-core-l1-1-5.py +1 -0
  625. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-0.py +1 -0
  626. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-1.py +1 -0
  627. angr/procedures/definitions/win32_api-ms-win-shcore-scaling-l1-1-2.py +1 -0
  628. angr/procedures/definitions/win32_api-ms-win-shcore-stream-winrt-l1-1-0.py +1 -0
  629. angr/procedures/definitions/win32_api-ms-win-wsl-api-l1-1-0.py +1 -0
  630. angr/procedures/definitions/win32_apphelp.py +1 -0
  631. angr/procedures/definitions/win32_authz.py +1 -0
  632. angr/procedures/definitions/win32_avicap32.py +1 -0
  633. angr/procedures/definitions/win32_avifil32.py +1 -0
  634. angr/procedures/definitions/win32_avrt.py +1 -0
  635. angr/procedures/definitions/win32_bcp47mrm.py +1 -0
  636. angr/procedures/definitions/win32_bcrypt.py +1 -0
  637. angr/procedures/definitions/win32_bcryptprimitives.py +1 -0
  638. angr/procedures/definitions/win32_bluetoothapis.py +1 -0
  639. angr/procedures/definitions/win32_bthprops.py +1 -0
  640. angr/procedures/definitions/win32_bthprops_cpl.py +1 -0
  641. angr/procedures/definitions/win32_cabinet.py +1 -0
  642. angr/procedures/definitions/win32_certadm.py +1 -0
  643. angr/procedures/definitions/win32_certpoleng.py +1 -0
  644. angr/procedures/definitions/win32_cfgmgr32.py +1 -0
  645. angr/procedures/definitions/win32_chakra.py +1 -0
  646. angr/procedures/definitions/win32_cldapi.py +1 -0
  647. angr/procedures/definitions/win32_clfsw32.py +1 -0
  648. angr/procedures/definitions/win32_clusapi.py +1 -0
  649. angr/procedures/definitions/win32_comctl32.py +1 -0
  650. angr/procedures/definitions/win32_comdlg32.py +1 -0
  651. angr/procedures/definitions/win32_compstui.py +1 -0
  652. angr/procedures/definitions/win32_computecore.py +1 -0
  653. angr/procedures/definitions/win32_computenetwork.py +1 -0
  654. angr/procedures/definitions/win32_computestorage.py +1 -0
  655. angr/procedures/definitions/win32_comsvcs.py +1 -0
  656. angr/procedures/definitions/win32_coremessaging.py +1 -0
  657. angr/procedures/definitions/win32_credui.py +1 -0
  658. angr/procedures/definitions/win32_crypt32.py +1 -0
  659. angr/procedures/definitions/win32_cryptnet.py +1 -0
  660. angr/procedures/definitions/win32_cryptui.py +1 -0
  661. angr/procedures/definitions/win32_cryptxml.py +1 -0
  662. angr/procedures/definitions/win32_cscapi.py +1 -0
  663. angr/procedures/definitions/win32_d2d1.py +1 -0
  664. angr/procedures/definitions/win32_d3d10.py +1 -0
  665. angr/procedures/definitions/win32_d3d10_1.py +1 -0
  666. angr/procedures/definitions/win32_d3d11.py +1 -0
  667. angr/procedures/definitions/win32_d3d12.py +1 -0
  668. angr/procedures/definitions/win32_d3d9.py +1 -0
  669. angr/procedures/definitions/win32_d3dcompiler_47.py +1 -0
  670. angr/procedures/definitions/win32_d3dcsx.py +1 -0
  671. angr/procedures/definitions/win32_davclnt.py +1 -0
  672. angr/procedures/definitions/win32_dbgeng.py +1 -0
  673. angr/procedures/definitions/win32_dbghelp.py +1 -0
  674. angr/procedures/definitions/win32_dbgmodel.py +1 -0
  675. angr/procedures/definitions/win32_dciman32.py +1 -0
  676. angr/procedures/definitions/win32_dcomp.py +1 -0
  677. angr/procedures/definitions/win32_ddraw.py +1 -0
  678. angr/procedures/definitions/win32_deviceaccess.py +1 -0
  679. angr/procedures/definitions/win32_dflayout.py +1 -0
  680. angr/procedures/definitions/win32_dhcpcsvc.py +1 -0
  681. angr/procedures/definitions/win32_dhcpcsvc6.py +1 -0
  682. angr/procedures/definitions/win32_dhcpsapi.py +1 -0
  683. angr/procedures/definitions/win32_diagnosticdataquery.py +1 -0
  684. angr/procedures/definitions/win32_dinput8.py +1 -0
  685. angr/procedures/definitions/win32_directml.py +1 -0
  686. angr/procedures/definitions/win32_dmprocessxmlfiltered.py +1 -0
  687. angr/procedures/definitions/win32_dnsapi.py +1 -0
  688. angr/procedures/definitions/win32_drt.py +1 -0
  689. angr/procedures/definitions/win32_drtprov.py +1 -0
  690. angr/procedures/definitions/win32_drttransport.py +1 -0
  691. angr/procedures/definitions/win32_dsound.py +1 -0
  692. angr/procedures/definitions/win32_dsparse.py +1 -0
  693. angr/procedures/definitions/win32_dsprop.py +1 -0
  694. angr/procedures/definitions/win32_dssec.py +1 -0
  695. angr/procedures/definitions/win32_dsuiext.py +1 -0
  696. angr/procedures/definitions/win32_dwmapi.py +1 -0
  697. angr/procedures/definitions/win32_dwrite.py +1 -0
  698. angr/procedures/definitions/win32_dxcompiler.py +1 -0
  699. angr/procedures/definitions/win32_dxcore.py +1 -0
  700. angr/procedures/definitions/win32_dxgi.py +1 -0
  701. angr/procedures/definitions/win32_dxva2.py +1 -0
  702. angr/procedures/definitions/win32_eappcfg.py +1 -0
  703. angr/procedures/definitions/win32_eappprxy.py +1 -0
  704. angr/procedures/definitions/win32_efswrt.py +1 -0
  705. angr/procedures/definitions/win32_elscore.py +1 -0
  706. angr/procedures/definitions/win32_esent.py +1 -0
  707. angr/procedures/definitions/win32_evr.py +1 -0
  708. angr/procedures/definitions/win32_faultrep.py +1 -0
  709. angr/procedures/definitions/win32_fhsvcctl.py +1 -0
  710. angr/procedures/definitions/win32_firewallapi.py +1 -0
  711. angr/procedures/definitions/win32_fltlib.py +1 -0
  712. angr/procedures/definitions/win32_fontsub.py +1 -0
  713. angr/procedures/definitions/win32_forceinline.py +1 -0
  714. angr/procedures/definitions/win32_fwpuclnt.py +1 -0
  715. angr/procedures/definitions/win32_fxsutility.py +1 -0
  716. angr/procedures/definitions/win32_gdi32.py +1 -0
  717. angr/procedures/definitions/win32_gdiplus.py +1 -0
  718. angr/procedures/definitions/win32_glu32.py +1 -0
  719. angr/procedures/definitions/win32_gpedit.py +1 -0
  720. angr/procedures/definitions/win32_hhctrl_ocx.py +1 -0
  721. angr/procedures/definitions/win32_hid.py +1 -0
  722. angr/procedures/definitions/win32_hlink.py +1 -0
  723. angr/procedures/definitions/win32_hrtfapo.py +1 -0
  724. angr/procedures/definitions/win32_httpapi.py +1 -0
  725. angr/procedures/definitions/win32_icm32.py +1 -0
  726. angr/procedures/definitions/win32_icmui.py +1 -0
  727. angr/procedures/definitions/win32_icu.py +1 -0
  728. angr/procedures/definitions/win32_ieframe.py +1 -0
  729. angr/procedures/definitions/win32_imagehlp.py +1 -0
  730. angr/procedures/definitions/win32_imgutil.py +1 -0
  731. angr/procedures/definitions/win32_imm32.py +1 -0
  732. angr/procedures/definitions/win32_infocardapi.py +1 -0
  733. angr/procedures/definitions/win32_inkobjcore.py +1 -0
  734. angr/procedures/definitions/win32_iphlpapi.py +1 -0
  735. angr/procedures/definitions/win32_iscsidsc.py +1 -0
  736. angr/procedures/definitions/win32_isolatedwindowsenvironmentutils.py +1 -0
  737. angr/procedures/definitions/win32_kernel32.py +1 -0
  738. angr/procedures/definitions/win32_kernelbase.py +1 -0
  739. angr/procedures/definitions/win32_keycredmgr.py +1 -0
  740. angr/procedures/definitions/win32_ksproxy_ax.py +1 -0
  741. angr/procedures/definitions/win32_ksuser.py +1 -0
  742. angr/procedures/definitions/win32_ktmw32.py +1 -0
  743. angr/procedures/definitions/win32_licenseprotection.py +1 -0
  744. angr/procedures/definitions/win32_loadperf.py +1 -0
  745. angr/procedures/definitions/win32_magnification.py +1 -0
  746. angr/procedures/definitions/win32_mapi32.py +1 -0
  747. angr/procedures/definitions/win32_mdmlocalmanagement.py +1 -0
  748. angr/procedures/definitions/win32_mdmregistration.py +1 -0
  749. angr/procedures/definitions/win32_mf.py +1 -0
  750. angr/procedures/definitions/win32_mfcore.py +1 -0
  751. angr/procedures/definitions/win32_mfplat.py +1 -0
  752. angr/procedures/definitions/win32_mfplay.py +1 -0
  753. angr/procedures/definitions/win32_mfreadwrite.py +1 -0
  754. angr/procedures/definitions/win32_mfsensorgroup.py +1 -0
  755. angr/procedures/definitions/win32_mfsrcsnk.py +1 -0
  756. angr/procedures/definitions/win32_mgmtapi.py +1 -0
  757. angr/procedures/definitions/win32_mi.py +1 -0
  758. angr/procedures/definitions/win32_mmdevapi.py +1 -0
  759. angr/procedures/definitions/win32_mpr.py +1 -0
  760. angr/procedures/definitions/win32_mprapi.py +1 -0
  761. angr/procedures/definitions/win32_mqrt.py +1 -0
  762. angr/procedures/definitions/win32_mrmsupport.py +1 -0
  763. angr/procedures/definitions/win32_msacm32.py +1 -0
  764. angr/procedures/definitions/win32_msajapi.py +1 -0
  765. angr/procedures/definitions/win32_mscms.py +1 -0
  766. angr/procedures/definitions/win32_mscoree.py +1 -0
  767. angr/procedures/definitions/win32_msctfmonitor.py +1 -0
  768. angr/procedures/definitions/win32_msdelta.py +1 -0
  769. angr/procedures/definitions/win32_msdmo.py +1 -0
  770. angr/procedures/definitions/win32_msdrm.py +1 -0
  771. angr/procedures/definitions/win32_msi.py +1 -0
  772. angr/procedures/definitions/win32_msimg32.py +1 -0
  773. angr/procedures/definitions/win32_mspatcha.py +1 -0
  774. angr/procedures/definitions/win32_mspatchc.py +1 -0
  775. angr/procedures/definitions/win32_msports.py +1 -0
  776. angr/procedures/definitions/win32_msrating.py +1 -0
  777. angr/procedures/definitions/win32_mssign32.py +1 -0
  778. angr/procedures/definitions/win32_mstask.py +1 -0
  779. angr/procedures/definitions/win32_msvfw32.py +1 -0
  780. angr/procedures/definitions/win32_mswsock.py +1 -0
  781. angr/procedures/definitions/win32_mtxdm.py +1 -0
  782. angr/procedures/definitions/win32_ncrypt.py +1 -0
  783. angr/procedures/definitions/win32_ndfapi.py +1 -0
  784. angr/procedures/definitions/win32_netapi32.py +1 -0
  785. angr/procedures/definitions/win32_netsh.py +1 -0
  786. angr/procedures/definitions/win32_netshell.py +1 -0
  787. angr/procedures/definitions/win32_newdev.py +1 -0
  788. angr/procedures/definitions/win32_ninput.py +1 -0
  789. angr/procedures/definitions/win32_normaliz.py +1 -0
  790. angr/procedures/definitions/win32_ntdll.py +1 -0
  791. angr/procedures/definitions/win32_ntdllk.py +1 -0
  792. angr/procedures/definitions/win32_ntdsapi.py +1 -0
  793. angr/procedures/definitions/win32_ntlanman.py +1 -0
  794. angr/procedures/definitions/win32_odbc32.py +1 -0
  795. angr/procedures/definitions/win32_odbcbcp.py +1 -0
  796. angr/procedures/definitions/win32_ole32.py +1 -0
  797. angr/procedures/definitions/win32_oleacc.py +1 -0
  798. angr/procedures/definitions/win32_oleaut32.py +1 -0
  799. angr/procedures/definitions/win32_oledlg.py +1 -0
  800. angr/procedures/definitions/win32_ondemandconnroutehelper.py +1 -0
  801. angr/procedures/definitions/win32_opengl32.py +1 -0
  802. angr/procedures/definitions/win32_opmxbox.py +1 -0
  803. angr/procedures/definitions/win32_p2p.py +1 -0
  804. angr/procedures/definitions/win32_p2pgraph.py +1 -0
  805. angr/procedures/definitions/win32_pdh.py +1 -0
  806. angr/procedures/definitions/win32_peerdist.py +1 -0
  807. angr/procedures/definitions/win32_powrprof.py +1 -0
  808. angr/procedures/definitions/win32_prntvpt.py +1 -0
  809. angr/procedures/definitions/win32_projectedfslib.py +1 -0
  810. angr/procedures/definitions/win32_propsys.py +1 -0
  811. angr/procedures/definitions/win32_psapi.py +1 -0
  812. angr/procedures/definitions/win32_quartz.py +1 -0
  813. angr/procedures/definitions/win32_query.py +1 -0
  814. angr/procedures/definitions/win32_qwave.py +1 -0
  815. angr/procedures/definitions/win32_rasapi32.py +1 -0
  816. angr/procedures/definitions/win32_rasdlg.py +1 -0
  817. angr/procedures/definitions/win32_resutils.py +1 -0
  818. angr/procedures/definitions/win32_rometadata.py +1 -0
  819. angr/procedures/definitions/win32_rpcns4.py +1 -0
  820. angr/procedures/definitions/win32_rpcproxy.py +1 -0
  821. angr/procedures/definitions/win32_rpcrt4.py +1 -0
  822. angr/procedures/definitions/win32_rstrtmgr.py +1 -0
  823. angr/procedures/definitions/win32_rtm.py +1 -0
  824. angr/procedures/definitions/win32_rtutils.py +1 -0
  825. angr/procedures/definitions/win32_rtworkq.py +1 -0
  826. angr/procedures/definitions/win32_sas.py +1 -0
  827. angr/procedures/definitions/win32_scarddlg.py +1 -0
  828. angr/procedures/definitions/win32_schannel.py +1 -0
  829. angr/procedures/definitions/win32_sechost.py +1 -0
  830. angr/procedures/definitions/win32_secur32.py +1 -0
  831. angr/procedures/definitions/win32_sensapi.py +1 -0
  832. angr/procedures/definitions/win32_sensorsutilsv2.py +1 -0
  833. angr/procedures/definitions/win32_setupapi.py +1 -0
  834. angr/procedures/definitions/win32_sfc.py +1 -0
  835. angr/procedures/definitions/win32_shdocvw.py +1 -0
  836. angr/procedures/definitions/win32_shell32.py +1 -0
  837. angr/procedures/definitions/win32_shlwapi.py +1 -0
  838. angr/procedures/definitions/win32_slc.py +1 -0
  839. angr/procedures/definitions/win32_slcext.py +1 -0
  840. angr/procedures/definitions/win32_slwga.py +1 -0
  841. angr/procedures/definitions/win32_snmpapi.py +1 -0
  842. angr/procedures/definitions/win32_spoolss.py +1 -0
  843. angr/procedures/definitions/win32_srclient.py +1 -0
  844. angr/procedures/definitions/win32_srpapi.py +1 -0
  845. angr/procedures/definitions/win32_sspicli.py +1 -0
  846. angr/procedures/definitions/win32_sti.py +1 -0
  847. angr/procedures/definitions/win32_t2embed.py +1 -0
  848. angr/procedures/definitions/win32_tapi32.py +1 -0
  849. angr/procedures/definitions/win32_tbs.py +1 -0
  850. angr/procedures/definitions/win32_tdh.py +1 -0
  851. angr/procedures/definitions/win32_tokenbinding.py +1 -0
  852. angr/procedures/definitions/win32_traffic.py +1 -0
  853. angr/procedures/definitions/win32_txfw32.py +1 -0
  854. angr/procedures/definitions/win32_ualapi.py +1 -0
  855. angr/procedures/definitions/win32_uiautomationcore.py +1 -0
  856. angr/procedures/definitions/win32_urlmon.py +1 -0
  857. angr/procedures/definitions/win32_user32.py +1 -0
  858. angr/procedures/definitions/win32_userenv.py +1 -0
  859. angr/procedures/definitions/win32_usp10.py +1 -0
  860. angr/procedures/definitions/win32_uxtheme.py +1 -0
  861. angr/procedures/definitions/win32_verifier.py +1 -0
  862. angr/procedures/definitions/win32_version.py +1 -0
  863. angr/procedures/definitions/win32_vertdll.py +1 -0
  864. angr/procedures/definitions/win32_virtdisk.py +1 -0
  865. angr/procedures/definitions/win32_vmdevicehost.py +1 -0
  866. angr/procedures/definitions/win32_vmsavedstatedumpprovider.py +1 -0
  867. angr/procedures/definitions/win32_vssapi.py +1 -0
  868. angr/procedures/definitions/win32_wcmapi.py +1 -0
  869. angr/procedures/definitions/win32_wdsbp.py +1 -0
  870. angr/procedures/definitions/win32_wdsclientapi.py +1 -0
  871. angr/procedures/definitions/win32_wdsmc.py +1 -0
  872. angr/procedures/definitions/win32_wdspxe.py +1 -0
  873. angr/procedures/definitions/win32_wdstptc.py +1 -0
  874. angr/procedures/definitions/win32_webauthn.py +1 -0
  875. angr/procedures/definitions/win32_webservices.py +1 -0
  876. angr/procedures/definitions/win32_websocket.py +1 -0
  877. angr/procedures/definitions/win32_wecapi.py +1 -0
  878. angr/procedures/definitions/win32_wer.py +1 -0
  879. angr/procedures/definitions/win32_wevtapi.py +1 -0
  880. angr/procedures/definitions/win32_winbio.py +1 -0
  881. angr/procedures/definitions/win32_windows_ai_machinelearning.py +1 -0
  882. angr/procedures/definitions/win32_windows_data_pdf.py +1 -0
  883. angr/procedures/definitions/win32_windows_media_mediacontrol.py +1 -0
  884. angr/procedures/definitions/win32_windows_networking.py +1 -0
  885. angr/procedures/definitions/win32_windows_ui_xaml.py +1 -0
  886. angr/procedures/definitions/win32_windowscodecs.py +1 -0
  887. angr/procedures/definitions/win32_winfax.py +1 -0
  888. angr/procedures/definitions/win32_winhttp.py +1 -0
  889. angr/procedures/definitions/win32_winhvemulation.py +1 -0
  890. angr/procedures/definitions/win32_winhvplatform.py +1 -0
  891. angr/procedures/definitions/win32_wininet.py +1 -0
  892. angr/procedures/definitions/win32_winml.py +1 -0
  893. angr/procedures/definitions/win32_winmm.py +1 -0
  894. angr/procedures/definitions/win32_winscard.py +1 -0
  895. angr/procedures/definitions/win32_winspool.py +1 -0
  896. angr/procedures/definitions/win32_winspool_drv.py +1 -0
  897. angr/procedures/definitions/win32_wintrust.py +1 -0
  898. angr/procedures/definitions/win32_winusb.py +1 -0
  899. angr/procedures/definitions/win32_wlanapi.py +1 -0
  900. angr/procedures/definitions/win32_wlanui.py +1 -0
  901. angr/procedures/definitions/win32_wldap32.py +1 -0
  902. angr/procedures/definitions/win32_wldp.py +1 -0
  903. angr/procedures/definitions/win32_wmvcore.py +1 -0
  904. angr/procedures/definitions/win32_wnvapi.py +1 -0
  905. angr/procedures/definitions/win32_wofutil.py +1 -0
  906. angr/procedures/definitions/win32_ws2_32.py +1 -0
  907. angr/procedures/definitions/win32_wscapi.py +1 -0
  908. angr/procedures/definitions/win32_wsclient.py +1 -0
  909. angr/procedures/definitions/win32_wsdapi.py +1 -0
  910. angr/procedures/definitions/win32_wsmsvc.py +1 -0
  911. angr/procedures/definitions/win32_wsnmp32.py +1 -0
  912. angr/procedures/definitions/win32_wtsapi32.py +1 -0
  913. angr/procedures/definitions/win32_xaudio2_8.py +1 -0
  914. angr/procedures/definitions/win32_xinput1_4.py +1 -0
  915. angr/procedures/definitions/win32_xinputuap.py +1 -0
  916. angr/procedures/definitions/win32_xmllite.py +1 -0
  917. angr/procedures/definitions/win32_xolehlp.py +1 -0
  918. angr/procedures/definitions/win32_xpsprint.py +1 -0
  919. angr/procedures/glibc/__ctype_b_loc.py +2 -3
  920. angr/procedures/glibc/__ctype_tolower_loc.py +2 -3
  921. angr/procedures/glibc/__ctype_toupper_loc.py +2 -3
  922. angr/procedures/glibc/__errno_location.py +1 -0
  923. angr/procedures/glibc/__libc_init.py +1 -0
  924. angr/procedures/glibc/__libc_start_main.py +2 -3
  925. angr/procedures/glibc/dynamic_loading.py +1 -0
  926. angr/procedures/glibc/scanf.py +1 -0
  927. angr/procedures/glibc/sscanf.py +1 -0
  928. angr/procedures/gnulib/xalloc_die.py +1 -0
  929. angr/procedures/gnulib/xstrtol_fatal.py +1 -0
  930. angr/procedures/java/__init__.py +1 -0
  931. angr/procedures/java/unconstrained.py +4 -3
  932. angr/procedures/java_io/read.py +1 -0
  933. angr/procedures/java_io/write.py +1 -0
  934. angr/procedures/java_jni/__init__.py +25 -18
  935. angr/procedures/java_jni/array_operations.py +1 -0
  936. angr/procedures/java_jni/class_and_interface_operations.py +3 -3
  937. angr/procedures/java_jni/field_access.py +3 -6
  938. angr/procedures/java_jni/global_and_local_refs.py +1 -0
  939. angr/procedures/java_jni/method_calls.py +3 -2
  940. angr/procedures/java_jni/not_implemented.py +2 -1
  941. angr/procedures/java_jni/object_operations.py +3 -4
  942. angr/procedures/java_jni/string_operations.py +2 -1
  943. angr/procedures/java_jni/version_information.py +1 -0
  944. angr/procedures/java_lang/character.py +2 -3
  945. angr/procedures/java_lang/double.py +2 -2
  946. angr/procedures/java_lang/exit.py +1 -0
  947. angr/procedures/java_lang/getsimplename.py +2 -2
  948. angr/procedures/java_lang/integer.py +1 -0
  949. angr/procedures/java_lang/load_library.py +1 -0
  950. angr/procedures/java_lang/math.py +1 -0
  951. angr/procedures/java_lang/string.py +3 -3
  952. angr/procedures/java_lang/stringbuilder.py +1 -0
  953. angr/procedures/java_lang/system.py +1 -0
  954. angr/procedures/java_util/collection.py +1 -0
  955. angr/procedures/java_util/iterator.py +1 -0
  956. angr/procedures/java_util/list.py +1 -0
  957. angr/procedures/java_util/map.py +3 -4
  958. angr/procedures/java_util/random.py +1 -0
  959. angr/procedures/java_util/scanner_nextline.py +2 -1
  960. angr/procedures/libc/abort.py +1 -0
  961. angr/procedures/libc/access.py +1 -0
  962. angr/procedures/libc/atoi.py +2 -2
  963. angr/procedures/libc/atol.py +1 -0
  964. angr/procedures/libc/calloc.py +1 -0
  965. angr/procedures/libc/closelog.py +1 -0
  966. angr/procedures/libc/err.py +1 -0
  967. angr/procedures/libc/error.py +2 -3
  968. angr/procedures/libc/exit.py +1 -0
  969. angr/procedures/libc/fclose.py +2 -3
  970. angr/procedures/libc/feof.py +1 -0
  971. angr/procedures/libc/fflush.py +1 -0
  972. angr/procedures/libc/fgetc.py +1 -0
  973. angr/procedures/libc/fgets.py +19 -19
  974. angr/procedures/libc/fopen.py +6 -8
  975. angr/procedures/libc/fprintf.py +1 -0
  976. angr/procedures/libc/fputc.py +1 -0
  977. angr/procedures/libc/fputs.py +1 -0
  978. angr/procedures/libc/fread.py +1 -0
  979. angr/procedures/libc/free.py +1 -0
  980. angr/procedures/libc/fscanf.py +2 -2
  981. angr/procedures/libc/fseek.py +3 -2
  982. angr/procedures/libc/ftell.py +1 -0
  983. angr/procedures/libc/fwrite.py +1 -0
  984. angr/procedures/libc/getchar.py +2 -2
  985. angr/procedures/libc/getdelim.py +25 -25
  986. angr/procedures/libc/getegid.py +1 -0
  987. angr/procedures/libc/geteuid.py +1 -0
  988. angr/procedures/libc/getgid.py +1 -0
  989. angr/procedures/libc/gets.py +18 -18
  990. angr/procedures/libc/getuid.py +1 -0
  991. angr/procedures/libc/malloc.py +1 -0
  992. angr/procedures/libc/memcmp.py +3 -6
  993. angr/procedures/libc/memcpy.py +1 -0
  994. angr/procedures/libc/memset.py +1 -0
  995. angr/procedures/libc/openlog.py +1 -0
  996. angr/procedures/libc/perror.py +1 -0
  997. angr/procedures/libc/printf.py +1 -0
  998. angr/procedures/libc/putchar.py +1 -0
  999. angr/procedures/libc/puts.py +1 -0
  1000. angr/procedures/libc/rand.py +1 -0
  1001. angr/procedures/libc/realloc.py +1 -0
  1002. angr/procedures/libc/rewind.py +2 -1
  1003. angr/procedures/libc/scanf.py +2 -2
  1004. angr/procedures/libc/setbuf.py +1 -0
  1005. angr/procedures/libc/setvbuf.py +1 -0
  1006. angr/procedures/libc/snprintf.py +1 -0
  1007. angr/procedures/libc/sprintf.py +1 -0
  1008. angr/procedures/libc/srand.py +1 -0
  1009. angr/procedures/libc/sscanf.py +2 -2
  1010. angr/procedures/libc/stpcpy.py +2 -2
  1011. angr/procedures/libc/strcat.py +1 -0
  1012. angr/procedures/libc/strchr.py +1 -0
  1013. angr/procedures/libc/strcmp.py +1 -0
  1014. angr/procedures/libc/strcpy.py +2 -2
  1015. angr/procedures/libc/strlen.py +35 -31
  1016. angr/procedures/libc/strncat.py +1 -0
  1017. angr/procedures/libc/strncmp.py +9 -11
  1018. angr/procedures/libc/strncpy.py +1 -0
  1019. angr/procedures/libc/strnlen.py +2 -2
  1020. angr/procedures/libc/strstr.py +8 -4
  1021. angr/procedures/libc/strtol.py +9 -9
  1022. angr/procedures/libc/strtoul.py +2 -2
  1023. angr/procedures/libc/system.py +1 -0
  1024. angr/procedures/libc/time.py +2 -2
  1025. angr/procedures/libc/tmpnam.py +1 -0
  1026. angr/procedures/libc/tolower.py +1 -0
  1027. angr/procedures/libc/toupper.py +1 -0
  1028. angr/procedures/libc/ungetc.py +1 -0
  1029. angr/procedures/libc/vsnprintf.py +1 -0
  1030. angr/procedures/libc/wchar.py +1 -0
  1031. angr/procedures/libstdcpp/_unwind_resume.py +1 -0
  1032. angr/procedures/libstdcpp/std____throw_bad_alloc.py +1 -0
  1033. angr/procedures/libstdcpp/std____throw_bad_cast.py +1 -0
  1034. angr/procedures/libstdcpp/std____throw_length_error.py +1 -0
  1035. angr/procedures/libstdcpp/std____throw_logic_error.py +1 -0
  1036. angr/procedures/libstdcpp/std__terminate.py +1 -0
  1037. angr/procedures/linux_kernel/access.py +1 -0
  1038. angr/procedures/linux_kernel/arch_prctl.py +1 -0
  1039. angr/procedures/linux_kernel/arm_user_helpers.py +1 -0
  1040. angr/procedures/linux_kernel/brk.py +1 -0
  1041. angr/procedures/linux_kernel/cwd.py +1 -0
  1042. angr/procedures/linux_kernel/fstat.py +2 -1
  1043. angr/procedures/linux_kernel/fstat64.py +2 -1
  1044. angr/procedures/linux_kernel/futex.py +3 -3
  1045. angr/procedures/linux_kernel/getegid.py +1 -0
  1046. angr/procedures/linux_kernel/geteuid.py +1 -0
  1047. angr/procedures/linux_kernel/getgid.py +1 -0
  1048. angr/procedures/linux_kernel/getpid.py +1 -0
  1049. angr/procedures/linux_kernel/getrlimit.py +3 -3
  1050. angr/procedures/linux_kernel/gettid.py +1 -0
  1051. angr/procedures/linux_kernel/getuid.py +1 -0
  1052. angr/procedures/linux_kernel/iovec.py +1 -0
  1053. angr/procedures/linux_kernel/lseek.py +1 -0
  1054. angr/procedures/linux_kernel/mmap.py +1 -0
  1055. angr/procedures/linux_kernel/mprotect.py +7 -6
  1056. angr/procedures/linux_kernel/munmap.py +1 -0
  1057. angr/procedures/linux_kernel/openat.py +3 -5
  1058. angr/procedures/linux_kernel/set_tid_address.py +1 -0
  1059. angr/procedures/linux_kernel/sigaction.py +1 -0
  1060. angr/procedures/linux_kernel/sigprocmask.py +1 -0
  1061. angr/procedures/linux_kernel/stat.py +3 -2
  1062. angr/procedures/linux_kernel/sysinfo.py +1 -0
  1063. angr/procedures/linux_kernel/tgkill.py +1 -0
  1064. angr/procedures/linux_kernel/time.py +2 -1
  1065. angr/procedures/linux_kernel/uid.py +1 -0
  1066. angr/procedures/linux_kernel/uname.py +1 -0
  1067. angr/procedures/linux_kernel/unlink.py +2 -2
  1068. angr/procedures/linux_kernel/vsyscall.py +2 -1
  1069. angr/procedures/linux_loader/_dl_initial_error_catch_tsd.py +1 -0
  1070. angr/procedures/linux_loader/_dl_rtld_lock.py +1 -0
  1071. angr/procedures/linux_loader/sim_loader.py +1 -0
  1072. angr/procedures/linux_loader/tls.py +2 -2
  1073. angr/procedures/msvcr/__getmainargs.py +1 -0
  1074. angr/procedures/msvcr/_initterm.py +1 -0
  1075. angr/procedures/msvcr/fmode.py +1 -0
  1076. angr/procedures/ntdll/exceptions.py +4 -3
  1077. angr/procedures/posix/accept.py +2 -2
  1078. angr/procedures/posix/bind.py +1 -0
  1079. angr/procedures/posix/bzero.py +1 -0
  1080. angr/procedures/posix/chroot.py +1 -0
  1081. angr/procedures/posix/close.py +2 -2
  1082. angr/procedures/posix/closedir.py +1 -0
  1083. angr/procedures/posix/dup.py +4 -3
  1084. angr/procedures/posix/fcntl.py +1 -0
  1085. angr/procedures/posix/fdopen.py +16 -19
  1086. angr/procedures/posix/fileno.py +1 -0
  1087. angr/procedures/posix/fork.py +1 -0
  1088. angr/procedures/posix/getenv.py +1 -0
  1089. angr/procedures/posix/gethostbyname.py +1 -0
  1090. angr/procedures/posix/getpass.py +1 -0
  1091. angr/procedures/posix/getsockopt.py +1 -0
  1092. angr/procedures/posix/htonl.py +2 -2
  1093. angr/procedures/posix/htons.py +2 -2
  1094. angr/procedures/posix/inet_ntoa.py +3 -5
  1095. angr/procedures/posix/listen.py +1 -0
  1096. angr/procedures/posix/mmap.py +2 -1
  1097. angr/procedures/posix/open.py +1 -0
  1098. angr/procedures/posix/opendir.py +1 -0
  1099. angr/procedures/posix/poll.py +3 -3
  1100. angr/procedures/posix/pread64.py +1 -0
  1101. angr/procedures/posix/pthread.py +3 -3
  1102. angr/procedures/posix/pwrite64.py +1 -0
  1103. angr/procedures/posix/read.py +1 -0
  1104. angr/procedures/posix/readdir.py +1 -1
  1105. angr/procedures/posix/recv.py +1 -0
  1106. angr/procedures/posix/recvfrom.py +1 -0
  1107. angr/procedures/posix/select.py +7 -7
  1108. angr/procedures/posix/send.py +2 -2
  1109. angr/procedures/posix/setsockopt.py +1 -0
  1110. angr/procedures/posix/sigaction.py +1 -0
  1111. angr/procedures/posix/sim_time.py +1 -0
  1112. angr/procedures/posix/sleep.py +1 -0
  1113. angr/procedures/posix/socket.py +2 -2
  1114. angr/procedures/posix/strcasecmp.py +1 -0
  1115. angr/procedures/posix/strdup.py +1 -0
  1116. angr/procedures/posix/strtok_r.py +32 -36
  1117. angr/procedures/posix/syslog.py +1 -0
  1118. angr/procedures/posix/tz.py +1 -0
  1119. angr/procedures/posix/unlink.py +1 -0
  1120. angr/procedures/posix/usleep.py +1 -0
  1121. angr/procedures/posix/write.py +1 -0
  1122. angr/procedures/procedure_dict.py +1 -0
  1123. angr/procedures/stubs/CallReturn.py +1 -0
  1124. angr/procedures/stubs/NoReturnUnconstrained.py +1 -0
  1125. angr/procedures/stubs/Nop.py +1 -0
  1126. angr/procedures/stubs/PathTerminator.py +1 -0
  1127. angr/procedures/stubs/Redirect.py +3 -2
  1128. angr/procedures/stubs/ReturnChar.py +1 -0
  1129. angr/procedures/stubs/ReturnUnconstrained.py +2 -1
  1130. angr/procedures/stubs/UnresolvableCallTarget.py +1 -0
  1131. angr/procedures/stubs/UnresolvableJumpTarget.py +1 -0
  1132. angr/procedures/stubs/UserHook.py +2 -1
  1133. angr/procedures/stubs/b64_decode.py +1 -0
  1134. angr/procedures/stubs/caller.py +1 -0
  1135. angr/procedures/stubs/crazy_scanf.py +1 -0
  1136. angr/procedures/stubs/format_parser.py +12 -16
  1137. angr/procedures/stubs/syscall_stub.py +6 -7
  1138. angr/procedures/testing/manyargs.py +1 -0
  1139. angr/procedures/testing/retreg.py +2 -2
  1140. angr/procedures/tracer/random.py +1 -0
  1141. angr/procedures/tracer/receive.py +4 -4
  1142. angr/procedures/tracer/transmit.py +4 -4
  1143. angr/procedures/uclibc/__uClibc_main.py +1 -0
  1144. angr/procedures/win32/EncodePointer.py +1 -0
  1145. angr/procedures/win32/ExitProcess.py +1 -0
  1146. angr/procedures/win32/GetCommandLine.py +1 -0
  1147. angr/procedures/win32/GetCurrentProcessId.py +1 -0
  1148. angr/procedures/win32/GetCurrentThreadId.py +1 -0
  1149. angr/procedures/win32/GetLastInputInfo.py +1 -0
  1150. angr/procedures/win32/GetModuleHandle.py +3 -4
  1151. angr/procedures/win32/GetProcessAffinityMask.py +1 -0
  1152. angr/procedures/win32/InterlockedExchange.py +2 -1
  1153. angr/procedures/win32/IsProcessorFeaturePresent.py +1 -0
  1154. angr/procedures/win32/VirtualAlloc.py +2 -1
  1155. angr/procedures/win32/VirtualProtect.py +1 -0
  1156. angr/procedures/win32/critical_section.py +1 -0
  1157. angr/procedures/win32/dynamic_loading.py +2 -1
  1158. angr/procedures/win32/file_handles.py +4 -4
  1159. angr/procedures/win32/gethostbyname.py +2 -2
  1160. angr/procedures/win32/heap.py +1 -0
  1161. angr/procedures/win32/is_bad_ptr.py +1 -0
  1162. angr/procedures/win32/local_storage.py +7 -6
  1163. angr/procedures/win32/mutex.py +1 -0
  1164. angr/procedures/win32/sim_time.py +7 -10
  1165. angr/procedures/win32/system_paths.py +5 -4
  1166. angr/procedures/win32_kernel/ExAllocatePool.py +1 -0
  1167. angr/procedures/win32_kernel/ExFreePoolWithTag.py +1 -0
  1168. angr/procedures/win_user32/chars.py +1 -0
  1169. angr/procedures/win_user32/keyboard.py +1 -0
  1170. angr/procedures/win_user32/messagebox.py +2 -4
  1171. angr/project.py +15 -22
  1172. angr/protos/__init__.py +1 -0
  1173. angr/serializable.py +6 -3
  1174. angr/sim_manager.py +18 -18
  1175. angr/sim_options.py +5 -7
  1176. angr/sim_procedure.py +16 -15
  1177. angr/sim_state.py +61 -88
  1178. angr/sim_state_options.py +9 -15
  1179. angr/sim_type.py +135 -123
  1180. angr/sim_variable.py +23 -38
  1181. angr/simos/__init__.py +3 -1
  1182. angr/simos/cgc.py +2 -1
  1183. angr/simos/javavm.py +84 -95
  1184. angr/simos/linux.py +54 -64
  1185. angr/simos/simos.py +14 -23
  1186. angr/simos/snimmuc_nxp.py +3 -6
  1187. angr/simos/userland.py +6 -6
  1188. angr/simos/windows.py +14 -11
  1189. angr/slicer.py +13 -11
  1190. angr/state_hierarchy.py +4 -4
  1191. angr/state_plugins/__init__.py +1 -0
  1192. angr/state_plugins/callstack.py +19 -18
  1193. angr/state_plugins/cgc.py +5 -4
  1194. angr/state_plugins/concrete.py +7 -8
  1195. angr/state_plugins/debug_variables.py +15 -17
  1196. angr/state_plugins/filesystem.py +13 -19
  1197. angr/state_plugins/gdb.py +3 -2
  1198. angr/state_plugins/globals.py +5 -1
  1199. angr/state_plugins/heap/__init__.py +1 -0
  1200. angr/state_plugins/heap/heap_base.py +1 -0
  1201. angr/state_plugins/heap/heap_brk.py +9 -6
  1202. angr/state_plugins/heap/heap_freelist.py +12 -9
  1203. angr/state_plugins/heap/heap_libc.py +1 -0
  1204. angr/state_plugins/heap/heap_ptmalloc.py +27 -36
  1205. angr/state_plugins/heap/utils.py +1 -0
  1206. angr/state_plugins/history.py +7 -10
  1207. angr/state_plugins/inspect.py +1 -0
  1208. angr/state_plugins/javavm_classloader.py +3 -2
  1209. angr/state_plugins/jni_references.py +2 -1
  1210. angr/state_plugins/libc.py +4 -4
  1211. angr/state_plugins/light_registers.py +6 -8
  1212. angr/state_plugins/log.py +1 -0
  1213. angr/state_plugins/loop_data.py +1 -0
  1214. angr/state_plugins/plugin.py +7 -8
  1215. angr/state_plugins/posix.py +14 -22
  1216. angr/state_plugins/preconstrainer.py +4 -3
  1217. angr/state_plugins/scratch.py +6 -5
  1218. angr/state_plugins/sim_action.py +15 -20
  1219. angr/state_plugins/sim_action_object.py +205 -82
  1220. angr/state_plugins/sim_event.py +1 -0
  1221. angr/state_plugins/solver.py +65 -93
  1222. angr/state_plugins/symbolizer.py +5 -6
  1223. angr/state_plugins/trace_additions.py +32 -42
  1224. angr/state_plugins/uc_manager.py +16 -9
  1225. angr/state_plugins/unicorn_engine.py +21 -37
  1226. angr/state_plugins/view.py +20 -19
  1227. angr/storage/__init__.py +1 -0
  1228. angr/storage/file.py +31 -33
  1229. angr/storage/memory_mixins/__init__.py +12 -15
  1230. angr/storage/memory_mixins/__init__.pyi +13 -14
  1231. angr/storage/memory_mixins/actions_mixin.py +2 -1
  1232. angr/storage/memory_mixins/address_concretization_mixin.py +11 -15
  1233. angr/storage/memory_mixins/bvv_conversion_mixin.py +10 -11
  1234. angr/storage/memory_mixins/clouseau_mixin.py +1 -0
  1235. angr/storage/memory_mixins/conditional_store_mixin.py +1 -0
  1236. angr/storage/memory_mixins/convenient_mappings_mixin.py +7 -8
  1237. angr/storage/memory_mixins/default_filler_mixin.py +12 -14
  1238. angr/storage/memory_mixins/dirty_addrs_mixin.py +1 -0
  1239. angr/storage/memory_mixins/hex_dumper_mixin.py +6 -9
  1240. angr/storage/memory_mixins/javavm_memory/__init__.py +1 -0
  1241. angr/storage/memory_mixins/javavm_memory/javavm_memory_mixin.py +16 -23
  1242. angr/storage/memory_mixins/keyvalue_memory/__init__.py +1 -0
  1243. angr/storage/memory_mixins/keyvalue_memory/keyvalue_memory_mixin.py +2 -1
  1244. angr/storage/memory_mixins/label_merger_mixin.py +2 -2
  1245. angr/storage/memory_mixins/multi_value_merger_mixin.py +6 -5
  1246. angr/storage/memory_mixins/name_resolution_mixin.py +12 -15
  1247. angr/storage/memory_mixins/paged_memory/page_backer_mixins.py +6 -6
  1248. angr/storage/memory_mixins/paged_memory/paged_memory_mixin.py +22 -36
  1249. angr/storage/memory_mixins/paged_memory/paged_memory_multivalue_mixin.py +1 -0
  1250. angr/storage/memory_mixins/paged_memory/pages/__init__.py +1 -2
  1251. angr/storage/memory_mixins/paged_memory/pages/cooperation.py +4 -3
  1252. angr/storage/memory_mixins/paged_memory/pages/history_tracking_mixin.py +4 -4
  1253. angr/storage/memory_mixins/paged_memory/pages/ispo_mixin.py +1 -0
  1254. angr/storage/memory_mixins/paged_memory/pages/list_page.py +12 -20
  1255. angr/storage/memory_mixins/paged_memory/pages/multi_values.py +14 -19
  1256. angr/storage/memory_mixins/paged_memory/pages/mv_list_page.py +26 -32
  1257. angr/storage/memory_mixins/paged_memory/pages/permissions_mixin.py +1 -0
  1258. angr/storage/memory_mixins/paged_memory/pages/refcount_mixin.py +2 -2
  1259. angr/storage/memory_mixins/paged_memory/pages/ultra_page.py +38 -42
  1260. angr/storage/memory_mixins/paged_memory/privileged_mixin.py +1 -0
  1261. angr/storage/memory_mixins/paged_memory/stack_allocation_mixin.py +1 -0
  1262. angr/storage/memory_mixins/regioned_memory/__init__.py +1 -0
  1263. angr/storage/memory_mixins/regioned_memory/abstract_address_descriptor.py +5 -4
  1264. angr/storage/memory_mixins/regioned_memory/abstract_merger_mixin.py +6 -21
  1265. angr/storage/memory_mixins/regioned_memory/region_category_mixin.py +1 -0
  1266. angr/storage/memory_mixins/regioned_memory/region_data.py +4 -5
  1267. angr/storage/memory_mixins/regioned_memory/region_meta_mixin.py +129 -13
  1268. angr/storage/memory_mixins/regioned_memory/regioned_address_concretization_mixin.py +2 -1
  1269. angr/storage/memory_mixins/regioned_memory/regioned_memory_mixin.py +34 -44
  1270. angr/storage/memory_mixins/regioned_memory/static_find_mixin.py +7 -9
  1271. angr/storage/memory_mixins/simple_interface_mixin.py +8 -11
  1272. angr/storage/memory_mixins/simplification_mixin.py +1 -0
  1273. angr/storage/memory_mixins/size_resolution_mixin.py +5 -4
  1274. angr/storage/memory_mixins/slotted_memory.py +3 -3
  1275. angr/storage/memory_mixins/smart_find_mixin.py +3 -2
  1276. angr/storage/memory_mixins/symbolic_merger_mixin.py +1 -0
  1277. angr/storage/memory_mixins/top_merger_mixin.py +2 -2
  1278. angr/storage/memory_mixins/underconstrained_mixin.py +12 -14
  1279. angr/storage/memory_mixins/unwrapper_mixin.py +1 -0
  1280. angr/storage/memory_object.py +35 -35
  1281. angr/storage/pcap.py +3 -3
  1282. angr/tablespecs.py +1 -0
  1283. angr/utils/__init__.py +1 -0
  1284. angr/utils/ail.py +30 -0
  1285. angr/utils/algo.py +1 -0
  1286. angr/utils/bits.py +12 -0
  1287. angr/utils/constants.py +2 -0
  1288. angr/utils/cowdict.py +3 -4
  1289. angr/utils/dynamic_dictlist.py +4 -7
  1290. angr/utils/endness.py +1 -0
  1291. angr/utils/enums_conv.py +1 -0
  1292. angr/utils/env.py +1 -0
  1293. angr/utils/formatting.py +1 -0
  1294. angr/utils/funcid.py +15 -14
  1295. angr/utils/graph.py +52 -19
  1296. angr/utils/lazy_import.py +1 -0
  1297. angr/utils/library.py +10 -13
  1298. angr/utils/loader.py +6 -6
  1299. angr/utils/mp.py +4 -3
  1300. angr/utils/orderedset.py +1 -0
  1301. angr/utils/segment_list.py +7 -9
  1302. angr/utils/ssa/__init__.py +198 -0
  1303. angr/utils/ssa/tmp_uses_collector.py +23 -0
  1304. angr/utils/ssa/vvar_uses_collector.py +37 -0
  1305. angr/utils/timing.py +32 -20
  1306. angr/utils/typing.py +1 -0
  1307. angr/vaults.py +7 -8
  1308. {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/METADATA +9 -8
  1309. angr-9.2.119.dist-info/RECORD +1345 -0
  1310. {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/WHEEL +1 -1
  1311. angr/analyses/decompiler/optimization_passes/spilled_register_finder.py +0 -18
  1312. angr/analyses/decompiler/seq_cf_structure_counter.py +0 -37
  1313. angr/service.py +0 -35
  1314. angr-9.2.117.dist-info/RECORD +0 -1310
  1315. {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/LICENSE +0 -0
  1316. {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/entry_points.txt +0 -0
  1317. {angr-9.2.117.dist-info → angr-9.2.119.dist-info}/top_level.txt +0 -0
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
 
3
4
  from cachetools import LRUCache
@@ -147,27 +148,20 @@ class VEXLifter(SimEngineBase):
147
148
  if num_inst is None and self._single_step:
148
149
  num_inst = 1
149
150
  if opt_level is None:
150
- if state and o.OPTIMIZE_IR in state.options:
151
- opt_level = 1
152
- else:
153
- opt_level = self._default_opt_level
151
+ opt_level = 1 if state and o.OPTIMIZE_IR in state.options else self._default_opt_level
154
152
  if cross_insn_opt is None:
155
- if state and o.NO_CROSS_INSN_OPT in state.options:
156
- cross_insn_opt = False
157
- else:
158
- cross_insn_opt = True
153
+ cross_insn_opt = not (state and o.NO_CROSS_INSN_OPT in state.options)
159
154
  if strict_block_end is None:
160
155
  strict_block_end = self.default_strict_block_end
161
- if self.selfmodifying_code:
162
- if opt_level > 0:
163
- if once("vex-engine-smc-opt-warning"):
164
- l.warning(
165
- "Self-modifying code is not always correctly optimized by PyVEX. "
166
- "To guarantee correctness, VEX optimizations have been disabled."
167
- )
168
- opt_level = 0
169
- if state and o.OPTIMIZE_IR in state.options:
170
- state.options.remove(o.OPTIMIZE_IR)
156
+ if self.selfmodifying_code and opt_level > 0:
157
+ if once("vex-engine-smc-opt-warning"):
158
+ l.warning(
159
+ "Self-modifying code is not always correctly optimized by PyVEX. "
160
+ "To guarantee correctness, VEX optimizations have been disabled."
161
+ )
162
+ opt_level = 0
163
+ if state and o.OPTIMIZE_IR in state.options:
164
+ state.options.remove(o.OPTIMIZE_IR)
171
165
  if skip_stmts is not True:
172
166
  skip_stmts = False
173
167
  if offset is None:
@@ -200,15 +194,13 @@ class VEXLifter(SimEngineBase):
200
194
  stop_point = self._first_stoppoint(irsb, extra_stop_points)
201
195
  if stop_point is None:
202
196
  return irsb
203
- else:
204
- size = stop_point - addr
205
- # check the cache again
206
- cache_key = (addr, insn_bytes, size, num_inst, thumb, opt_level, strict_block_end, cross_insn_opt)
207
- if cache_key in self._block_cache:
208
- self._block_cache_hits += 1
209
- return self._block_cache[cache_key]
210
- else:
211
- self._block_cache_misses += 1
197
+ size = stop_point - addr
198
+ # check the cache again
199
+ cache_key = (addr, insn_bytes, size, num_inst, thumb, opt_level, strict_block_end, cross_insn_opt)
200
+ if cache_key in self._block_cache:
201
+ self._block_cache_hits += 1
202
+ return self._block_cache[cache_key]
203
+ self._block_cache_misses += 1
212
204
  else:
213
205
  # a special case: `size` is used as the maximum allowed size
214
206
  tmp_cache_key = (
@@ -247,9 +239,9 @@ class VEXLifter(SimEngineBase):
247
239
 
248
240
  if isinstance(buff, claripy.ast.BV): # pylint:disable=isinstance-second-argument-not-valid-type
249
241
  if len(buff) == 0:
250
- raise SimEngineError("No bytes in memory for block starting at %#x." % addr)
242
+ raise SimEngineError(f"No bytes in memory for block starting at {addr:#x}.")
251
243
  elif not buff:
252
- raise SimEngineError("No bytes in memory for block starting at %#x." % addr)
244
+ raise SimEngineError(f"No bytes in memory for block starting at {addr:#x}.")
253
245
 
254
246
  # phase 5: call into pyvex
255
247
  l.debug("Creating IRSB of %s at %#x", arch, addr)
@@ -331,7 +323,7 @@ class VEXLifter(SimEngineBase):
331
323
  "think you ought to be able to, open an issue."
332
324
  )
333
325
  else:
334
- raise TypeError("Unsupported backer type %s." % type(backer))
326
+ raise TypeError(f"Unsupported backer type {type(backer)}.")
335
327
  elif state:
336
328
  if state.memory.SUPPORTS_CONCRETE_LOAD:
337
329
  buff = state.memory.concrete_load(addr, max_size)
@@ -389,11 +381,12 @@ class VEXLifter(SimEngineBase):
389
381
  return None
390
382
 
391
383
  def __is_stop_point(self, addr, extra_stop_points=None):
392
- if self.project is not None and addr in self.project._sim_procedures:
393
- return True
394
- elif extra_stop_points is not None and addr in extra_stop_points:
395
- return True
396
- return False
384
+ return bool(
385
+ self.project is not None
386
+ and addr in self.project._sim_procedures
387
+ or extra_stop_points is not None
388
+ and addr in extra_stop_points
389
+ )
397
390
 
398
391
  def __getstate__(self):
399
392
  ostate = super().__getstate__()
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from .light import VEXMixin
2
3
  from .resilience import VEXResilienceMixin
3
4
  from .slicing import VEXSlicingMixin
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
 
3
4
  import pyvex
@@ -399,10 +400,7 @@ class VEXMixin(SimEngineBase):
399
400
  load_result = self._perform_vex_stmt_LoadG_load(
400
401
  addr, ty, end, condition=self._perform_vex_stmt_LoadG_guard_condition(guard)
401
402
  )
402
- if cvt_op is None:
403
- cvt_result = load_result
404
- else:
405
- cvt_result = self._perform_vex_stmt_LoadG_widen(cvt_op, (load_result,))
403
+ cvt_result = load_result if cvt_op is None else self._perform_vex_stmt_LoadG_widen(cvt_op, (load_result,))
406
404
  ite_result = self._perform_vex_stmt_LoadG_ite(guard, cvt_result, alt)
407
405
  self._perform_vex_stmt_LoadG_wrtmp(dst, ite_result)
408
406
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from angr.engines.vex.light import VEXMixin
2
3
  from angr import errors
3
4
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from .light import VEXMixin
2
3
  from ....utils.constants import DEFAULT_STATEMENT
3
4
 
angr/errors.py CHANGED
@@ -1,4 +1,5 @@
1
1
  # pylint:disable=missing-class-docstring
2
+ from __future__ import annotations
2
3
 
3
4
 
4
5
  class AngrError(Exception):
@@ -564,7 +565,7 @@ class SimSegfaultException(SimException, SimMemoryError):
564
565
  return "SimSegfaultException({:#x} ({}{})".format(
565
566
  self.addr,
566
567
  self.reason,
567
- (", original %s" % self.original_addr.__repr__(max_depth=3)) if self.original_addr is not None else "",
568
+ (f", original {self.original_addr.__repr__(max_depth=3)}") if self.original_addr is not None else "",
568
569
  )
569
570
 
570
571
  def __reduce__(self):
@@ -604,5 +605,9 @@ class SimConcreteBreakpointError(AngrError):
604
605
  #
605
606
 
606
607
 
608
+ class AngrDecompilationError(AngrError):
609
+ pass
610
+
611
+
607
612
  class UnsupportedNodeTypeError(AngrError, NotImplementedError):
608
613
  pass
@@ -1,4 +1,5 @@
1
1
  # pylint:disable=unused-import,missing-class-docstring,wrong-import-position
2
+ from __future__ import annotations
2
3
  import angr # For type annotations
3
4
 
4
5
 
@@ -17,9 +18,9 @@ class ExplorationTechnique:
17
18
  _hook_list = ("step", "filter", "selector", "step_state", "successors")
18
19
 
19
20
  def _get_hooks(self):
20
- return {name: getattr(self, name) for name in self._hook_list if self._is_overriden(name)}
21
+ return {name: getattr(self, name) for name in self._hook_list if self._is_overridden(name)}
21
22
 
22
- def _is_overriden(self, name):
23
+ def _is_overridden(self, name):
23
24
  return getattr(self, name).__code__ is not getattr(ExplorationTechnique, name).__code__
24
25
 
25
26
  def __init__(self):
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import math
2
3
  from collections import defaultdict
3
4
  import logging
@@ -91,6 +92,4 @@ class Bucketizer(ExplorationTechnique):
91
92
  return True
92
93
 
93
94
  n = math.log2(t[transition])
94
- if n.is_integer():
95
- return True
96
- return False
95
+ return bool(n.is_integer())
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from .. import engines
2
3
  from ..errors import SimError, AngrError, AngrExplorationTechniqueError
3
4
 
@@ -44,13 +45,12 @@ def condition_to_lambda(condition, default=False):
44
45
  except (AngrError, SimError):
45
46
  return False
46
47
 
47
- elif hasattr(condition, "__call__"):
48
+ elif callable(condition):
48
49
  condition_function = condition
49
50
  static_addrs = None
50
51
  else:
51
52
  raise AngrExplorationTechniqueError(
52
- "ExplorationTechnique is unable to convert given type (%s) to a callable condition function."
53
- % condition.__class__
53
+ f"ExplorationTechnique is unable to convert given type ({condition.__class__}) to a callable condition function."
54
54
  )
55
55
 
56
56
  return condition_function, static_addrs
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from . import ExplorationTechnique
2
3
  import random
3
4
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
  from collections import defaultdict
3
4
 
@@ -21,7 +22,7 @@ class BaseGoal:
21
22
  self.sort = sort
22
23
 
23
24
  def __repr__(self):
24
- return "<TargetCondition %s>" % self.sort
25
+ return f"<TargetCondition {self.sort}>"
25
26
 
26
27
  #
27
28
  # Public methods
@@ -38,7 +39,7 @@ class BaseGoal:
38
39
  :rtype: bool
39
40
  """
40
41
 
41
- raise NotImplementedError()
42
+ raise NotImplementedError
42
43
 
43
44
  def check_state(self, state):
44
45
  """
@@ -49,7 +50,7 @@ class BaseGoal:
49
50
  :rtype: bool
50
51
  """
51
52
 
52
- raise NotImplementedError()
53
+ raise NotImplementedError
53
54
 
54
55
  #
55
56
  # Private methods
@@ -121,7 +122,7 @@ class ExecuteAddressGoal(BaseGoal):
121
122
  self.addr = addr
122
123
 
123
124
  def __repr__(self):
124
- return "<ExecuteAddressCondition targeting %#x>" % self.addr
125
+ return f"<ExecuteAddressCondition targeting {self.addr:#x}>"
125
126
 
126
127
  def check(self, cfg, state, peek_blocks):
127
128
  """
@@ -200,7 +201,7 @@ class CallFunctionGoal(BaseGoal):
200
201
  # TODO: allow user to provide an optional argument processor to process arguments
201
202
 
202
203
  def __repr__(self):
203
- return "<FunctionCallCondition over %s>" % self.function
204
+ return f"<FunctionCallCondition over {self.function}>"
204
205
 
205
206
  def check(self, cfg, state, peek_blocks):
206
207
  """
@@ -232,15 +233,14 @@ class CallFunctionGoal(BaseGoal):
232
233
  # we do not care about arguments
233
234
  return True
234
235
 
235
- else:
236
- # check arguments
237
- arch = state.arch
238
- state = the_node.input_state
239
- same_arguments = self._check_arguments(arch, state)
236
+ # check arguments
237
+ arch = state.arch
238
+ state = the_node.input_state
239
+ same_arguments = self._check_arguments(arch, state)
240
240
 
241
- if same_arguments:
242
- # all arguments are the same!
243
- return True
241
+ if same_arguments:
242
+ # all arguments are the same!
243
+ return True
244
244
 
245
245
  l.debug("SimState %s will not reach function %s.", state, self.function)
246
246
  return False
@@ -272,7 +272,7 @@ class CallFunctionGoal(BaseGoal):
272
272
  cc = default_cc(arch.name, platform=state.project.simos.name if state.project.simos is not None else None)(arch)
273
273
  real_args = cc.get_args(state, cc.guess_prototype([0] * len(self.arguments)))
274
274
 
275
- for i, (expected_arg, real_arg) in enumerate(zip(self.arguments, real_args)):
275
+ for _i, (expected_arg, real_arg) in enumerate(zip(self.arguments, real_args)):
276
276
  if expected_arg is None:
277
277
  continue
278
278
 
@@ -309,8 +309,7 @@ class CallFunctionGoal(BaseGoal):
309
309
  ptr = real_value
310
310
  return CallFunctionGoal._compare_pointer_content(state, ptr, expected_value)
311
311
 
312
- else:
313
- l.error("Unsupported argument type %s in _compare_arguments(). Please bug Fish to implement.", arg_type)
312
+ l.error("Unsupported argument type %s in _compare_arguments(). Please bug Fish to implement.", arg_type)
314
313
 
315
314
  elif isinstance(arg_type, SimTypeString):
316
315
  # resolve the pointer and compare the content
@@ -487,9 +486,8 @@ class Director(ExplorationTechnique):
487
486
 
488
487
  for goal in self._goals:
489
488
  for p in simgr.active:
490
- if self._check_goals(goal, p):
491
- if self._goal_satisfied_callback is not None:
492
- self._goal_satisfied_callback(goal, p, simgr)
489
+ if self._check_goals(goal, p) and self._goal_satisfied_callback is not None:
490
+ self._goal_satisfied_callback(goal, p, simgr)
493
491
 
494
492
  simgr.stash(
495
493
  filter_func=lambda p: all(
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
  from itertools import islice
3
4
 
@@ -93,12 +94,7 @@ class DrillerCore(ExplorationTechnique):
93
94
  @staticmethod
94
95
  def _has_false(state):
95
96
  # Check if the state is unsat even if we remove preconstraints.
96
- claripy_false = claripy.false
97
- if state.scratch.guard.cache_key == claripy_false.cache_key:
97
+ if state.scratch.guard.identical(claripy.false()):
98
98
  return True
99
99
 
100
- for c in state.solver.constraints:
101
- if c.cache_key == claripy_false.cache_key:
102
- return True
103
-
104
- return False
100
+ return any(c.identical(claripy.false()) for c in state.solver.constraints)
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
  import claripy
3
4
 
@@ -136,9 +137,12 @@ class Explorer(ExplorationTechnique):
136
137
  resource_event(state, e)
137
138
  return "interrupted"
138
139
 
139
- if self.cfg is not None and self.cfg.model.get_any_node(state.addr) is not None:
140
- if state.addr not in self.ok_blocks:
141
- return self.avoid_stash
140
+ if (
141
+ self.cfg is not None
142
+ and self.cfg.model.get_any_node(state.addr) is not None
143
+ and state.addr not in self.ok_blocks
144
+ ):
145
+ return self.avoid_stash
142
146
 
143
147
  return None
144
148
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from . import ExplorationTechnique
2
3
 
3
4
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
  from collections import defaultdict
3
4
 
@@ -35,8 +36,7 @@ class LocalLoopSeer(ExplorationTechnique):
35
36
  if state in self.cut_succs:
36
37
  self.cut_succs.remove(state)
37
38
  return self.discard_stash
38
- else:
39
- return simgr.filter(state, **kwargs)
39
+ return simgr.filter(state, **kwargs)
40
40
 
41
41
  def successors(self, simgr, state, **kwargs):
42
42
  succs = simgr.successors(state, **kwargs)
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
 
3
4
  from . import ExplorationTechnique
@@ -80,7 +81,7 @@ class LoopSeer(ExplorationTechnique):
80
81
  func = self._get_function(f)
81
82
  if func is not None:
82
83
  funcs.append(func)
83
- funcs = None if not funcs else funcs
84
+ funcs = funcs if funcs else None
84
85
 
85
86
  elif self.functions is not None:
86
87
  raise TypeError("Invalid type for 'functions' parameter!")
@@ -97,8 +98,7 @@ class LoopSeer(ExplorationTechnique):
97
98
  if state in self.cut_succs:
98
99
  self.cut_succs.remove(state)
99
100
  return self.discard_stash
100
- else:
101
- return simgr.filter(state, **kwargs)
101
+ return simgr.filter(state, **kwargs)
102
102
 
103
103
  def successors(self, simgr, state, **kwargs):
104
104
  node = self.cfg.model.get_any_node(state.addr)
@@ -111,14 +111,13 @@ class LoopSeer(ExplorationTechnique):
111
111
  # chose not to take it (e.g., the loop is not concrete), increase the trip count
112
112
  at_loop_exit = False
113
113
  for succ_state in succs.successors:
114
- if succ_state.loop_data.current_loop:
115
- if succ_state.addr in succ_state.loop_data.current_loop[-1][1]:
116
- l.debug(
117
- "One of the successors: %s is at the exit of the current loop %s",
118
- hex(succ_state.addr),
119
- succ_state.loop_data.current_loop[-1][0],
120
- )
121
- at_loop_exit = True
114
+ if succ_state.loop_data.current_loop and succ_state.addr in succ_state.loop_data.current_loop[-1][1]:
115
+ l.debug(
116
+ "One of the successors: %s is at the exit of the current loop %s",
117
+ hex(succ_state.addr),
118
+ succ_state.loop_data.current_loop[-1][0],
119
+ )
120
+ at_loop_exit = True
122
121
 
123
122
  for succ_state in succs.successors:
124
123
  # Processing a currently running loop
@@ -214,9 +213,7 @@ class LoopSeer(ExplorationTechnique):
214
213
  # pylint: disable=R0201
215
214
  def _inside_current_loops(self, succ_state):
216
215
  current_loops_addrs = [x[0].entry.addr for x in succ_state.loop_data.current_loop]
217
- if succ_state.addr in current_loops_addrs:
218
- return True
219
- return False
216
+ return succ_state.addr in current_loops_addrs
220
217
 
221
218
  def _get_function(self, func):
222
219
  f = None
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
 
3
4
  from . import ExplorationTechnique
@@ -13,7 +14,7 @@ class ManualMergepoint(ExplorationTechnique):
13
14
  self.prune = prune
14
15
  self.wait_counter = 0
15
16
  self.stash = f"merge_waiting_{self.address:#x}_{id(self):x}"
16
- self.filter_marker = "skip_next_filter_%#x" % self.address
17
+ self.filter_marker = f"skip_next_filter_{self.address:#x}"
17
18
 
18
19
  def setup(self, simgr):
19
20
  simgr.stashes[self.stash] = []
@@ -71,7 +72,7 @@ class ManualMergepoint(ExplorationTechnique):
71
72
  while len(simgr.stashes[self.stash]):
72
73
  num_unique += 1
73
74
  exemplar_callstack = simgr.stashes[self.stash][0].callstack
74
- simgr.move(self.stash, "merge_tmp", lambda s: s.callstack == exemplar_callstack)
75
+ simgr.move(self.stash, "merge_tmp", lambda s, ec=exemplar_callstack: s.callstack == ec)
75
76
  l.debug("...%d with unique callstack #%d", len(simgr.merge_tmp), num_unique)
76
77
  if len(simgr.merge_tmp) > 1:
77
78
  simgr = simgr.merge(stash="merge_tmp", prune=self.prune)
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from . import ExplorationTechnique
2
3
  import psutil
3
4
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import claripy
2
3
  import functools
3
4
 
@@ -83,11 +84,10 @@ class Oppologist(ExplorationTechnique):
83
84
  try:
84
85
  if e.executed_instruction_count:
85
86
  return self._delayed_oppology(simgr, state, e, **kwargs)
86
- else:
87
- return self._oppologize(simgr, state, state.copy(), **kwargs)
88
- except exc_list: # pylint:disable=broad-except
87
+ return self._oppologize(simgr, state, state.copy(), **kwargs)
88
+ except exc_list as err:
89
89
  l.error("Oppologizer hit an error while trying to perform repairs", exc_info=True)
90
- raise e
90
+ raise e from err
91
91
  except Exception: # pylint:disable=broad-except
92
92
  l.error("Original block hit an unsupported error", exc_info=True)
93
93
  raise
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from ..errors import AngrExitError
2
3
  from . import ExplorationTechnique
3
4
 
@@ -1,4 +1,7 @@
1
1
  # pylint:disable=no-member,import-outside-toplevel
2
+ from __future__ import annotations
3
+
4
+ import contextlib
2
5
  import logging
3
6
 
4
7
  from . import ExplorationTechnique
@@ -17,7 +20,7 @@ class PickledStatesBase:
17
20
  Sort pickled states.
18
21
  """
19
22
 
20
- raise NotImplementedError()
23
+ raise NotImplementedError
21
24
 
22
25
  def add(self, prio, sid):
23
26
  """
@@ -27,7 +30,7 @@ class PickledStatesBase:
27
30
  :param str sid: Persistent ID of the state.
28
31
  :return: None
29
32
  """
30
- raise NotImplementedError()
33
+ raise NotImplementedError
31
34
 
32
35
  def pop_n(self, n):
33
36
  """
@@ -36,7 +39,7 @@ class PickledStatesBase:
36
39
  :param int n: Number of states to take.
37
40
  :return: A list of states.
38
41
  """
39
- raise NotImplementedError()
42
+ raise NotImplementedError
40
43
 
41
44
 
42
45
  class PickledStatesList(PickledStatesBase):
@@ -75,12 +78,9 @@ class PickledStatesDb(PickledStatesBase):
75
78
  # ORM declarations
76
79
  engine = create_engine(db_str)
77
80
 
78
- # create table
79
- try:
81
+ # create table (unless it already exists)
82
+ with contextlib.suppress(OperationalError):
80
83
  Base.metadata.create_all(engine, checkfirst=True)
81
- except OperationalError:
82
- # table already exists
83
- pass
84
84
 
85
85
  self.Session = sessionmaker(bind=engine)
86
86
 
@@ -1,4 +1,5 @@
1
1
  # pylint:disable=missing-class-docstring,unused-import
2
+ from __future__ import annotations
2
3
  import datetime
3
4
 
4
5
  try:
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import random
2
3
  from collections import defaultdict
3
4
 
@@ -47,10 +48,8 @@ class StochasticSearch(ExplorationTechnique):
47
48
  weight = self.affinity[state.addr]
48
49
  if selected < weight:
49
50
  break
50
- else:
51
- selected -= weight
52
- picked = states[i]
53
- return picked
51
+ selected -= weight
52
+ return states[i]
54
53
 
55
54
  simgr.stashes[stash] = [weighted_pick(simgr.stashes[stash])]
56
55
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from . import ExplorationTechnique
2
3
 
3
4
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
  import claripy
3
4
 
@@ -19,12 +20,12 @@ def ast_weight(ast, memo=None):
19
20
  if memo is None:
20
21
  memo = {}
21
22
 
22
- result = memo.get(ast.cache_key, None)
23
+ result = memo.get(ast.hash(), None)
23
24
  if result is not None:
24
25
  return result
25
26
 
26
27
  result = 1 + sum(ast_weight(arg, memo) for arg in ast.args)
27
- memo[ast.cache_key] = result
28
+ memo[ast.hash()] = result
28
29
  return result
29
30
 
30
31
 
@@ -68,11 +69,11 @@ class Suggestions(ExplorationTechnique):
68
69
  if event.objects["type"] is claripy.errors.ClaripySolverInterruptError:
69
70
  if event.objects["reason"][0] == "timeout":
70
71
  limit_number = state.solver._solver.timeout
71
- limit_kind = "hit a solver timeout of %s ms." % limit_number
72
+ limit_kind = f"hit a solver timeout of {limit_number} ms."
72
73
  limit_minimum = 60 * 1000
73
74
  elif event.objects["reason"][0] == "max. memory exceeded":
74
75
  limit_number = state.solver._solver.max_memory
75
- limit_kind = "hit a solver memory limit of %s MB." % limit_number
76
+ limit_kind = f"hit a solver memory limit of {limit_number} MB."
76
77
  limit_minimum = 1024
77
78
  else:
78
79
  limit_number = None
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import logging
2
3
  from .common import condition_to_lambda
3
4
  from . import ExplorationTechnique
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  from . import ExplorationTechnique
2
3
 
3
4
 
@@ -1,4 +1,5 @@
1
1
  # pylint: disable=cell-var-from-loop
2
+ from __future__ import annotations
2
3
  import concurrent.futures
3
4
  import logging
4
5
 
@@ -1,3 +1,4 @@
1
+ from __future__ import annotations
1
2
  import time
2
3
  import logging
3
4
  from . import ExplorationTechnique